Jump to content

gerar numeros aleatorios diferentes


Recommended Posts

Posted

porque e que assim nao da para gerar diferentes?

int euromilhoes(){
   srand ( time(NULL) );
   n1 = rand() % 50 + 1;
   n2 = rand() % 50 + 1;
   n3 = rand() % 50 + 1;
   n4 = rand() % 50 + 1;
   n5 = rand() % 50 + 1;
   e1 = rand() % 11 + 1;
   e2 = rand() % 11 + 1;
   if((n1!=n2)&&(n2!=n3)&&(n3!=n4)&&(n4!=n5)&&(e1!=e2)){ 
														  printf("Numeros: %d, %d, %d, %d, %d\n", n1, n2, n3, n4, n5);
														  printf("Estrelas: %d, %d\n\n\n", e1, e2);
														  }
   else{
	    srand ( time(NULL) );
	    n1 = rand() % 50 + 1;
	    n2 = rand() % 50 + 1;
	    n3 = rand() % 50 + 1;
	    n4 = rand() % 50 + 1;
	    n5 = rand() % 50 + 1;
	    e1 = rand() % 11 + 1;
	    e2 = rand() % 11 + 1;
	    printf("Numeros: %d, %d, %d, %d, %d\n", n1, n2, n3, n4, n5);
	    printf("Estrelas: %d, %d\n\n\n", e1, e2);
	    }
}
Posted

tu nunca sabes que número vai ser gerado, logo não há garantias que um número possa ou não já ter sido criado, principalmente porque o quanto mais se limita o número de possibilidades (neste caso 50) mais provável é a criação de um número igual.

não faz sentido usares um if para resolver esta questão.

se fizeres uma procura no forum por este tema, verás que o melhor é:

- criar uma lista de numero de 1 até 50

- baralhar os elementos desta lista

- escolher os 5 primeiros elementos da lista

desta forma tens a garantia que os números nunca são iguais

IRC : sim, é algo que ainda existe >> #p@p
Posted

Porque as funções de geração de números aleatórios (todas, em todas as linguagens) não te garantem que te vão devolver sempre números diferentes dos imediatamente anteriores; garantem apenas que todos os números têm uma igual probabilidade de serem gerados por elas ao longo dum número grande de execuções. Quando ainda por cima reduzes os números possíveis com um módulo pior ainda.

Imagina que a função rand devolve os números 23, 123, 373, 673 e 423. Ao fazer o modulo 50 ficas com 23, 23, 23, 23, 23.

Como escrevi anteriormente este assunto já foi discutido aqui à pouco tempo; faz uma pesquisa por Euromilhões ou totoloto.

como e que baralho essa lista?

Se bem me lembro o pmg indicou um método para isso numa dessas discussões.

Posted

Se bem me lembro o pmg indicou um método para isso numa dessas discussões.

Fui eu que indiquei o método. O pmg indicou uma função da STL que não se aplica a este caso (porque estamos na secção de C).

Não respondo a dúvidas por mensagem.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.