• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

dioguito

Limpar Memoria numa funcao Random

7 mensagens neste tópico

boas

Estou a fazer um projecto que se tem de gerar varios numeros com a função Random mas os numeros que sao criados sao sempre iguais.

Gostava que me ajudassem a arranjar uma maneira de isso nao acontecer.

cumprimentos

Diogo Martins

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como assim: "são sempre iguais"?

a) São sempre iguais de cada vez que chamas a função rand()?

ou

;) são sempre iguais de cada vez que chamas o programa?

Se a) mete aqui o código

Se :P inicializa o gerador de números aleatórios com uma coisa diferente para cada invocação do programa: por exemplo

#include <stdlib.h>
#include <time.h>
/* ... */
int main(void) {
  srand(time(0));
  /* ... */
  return 0;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sao sempre iguais kuando chama a funcao random.

# include <stdio.h>
# include <stdlib.h>
# include <time.h>

#define NUMS 50


int numsrandon (int limite)
{
int a;
srand ((unsigned)time(NULL));
a= rand()%limite;
return(a);

}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A função srand só deve ser executada uma vez, e tu está a executá-la sempre que queres gerar um novo número.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Exacto, tal como disse o Rui Carlos, a função srand deve ser chamada uma única vez. Assim, chamá-la no início do main como sugeriu o pmg será uma solução. :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois eu sei que sim.

mas o que eu queria mesmo era gerar 5 numeros diferentes.

abraço

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois eu sei que sim.

mas o que eu queria mesmo era gerar 5 numeros diferentes.

abraço

Tanto faz que queiras gerar 1 como 1000 números, a função srand só deve ser chamada uma vez em cada execução do programa.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora