guilhoto Posted May 21, 2012 at 07:42 PM Report #457238 Posted May 21, 2012 at 07:42 PM como e que gero 5 numeros diferentes? queria mostrar uma chave do totoloto, gerei 5 numeros mas como e que garanto que eles sejam todos diferentes?
bsccara Posted May 21, 2012 at 07:56 PM Report #457241 Posted May 21, 2012 at 07:56 PM Faz um pesquisa pelo fórum porque isso já foi discutido várias vezes recentemente.
guilhoto Posted May 22, 2012 at 07:33 PM Author Report #457459 Posted May 22, 2012 at 07:33 PM 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); } }
HappyHippyHippo Posted May 22, 2012 at 07:55 PM Report #457463 Posted May 22, 2012 at 07:55 PM 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 Portugol Plus
guilhoto Posted May 22, 2012 at 08:02 PM Author Report #457464 Posted May 22, 2012 at 08:02 PM como e que baralho essa lista?
bsccara Posted May 22, 2012 at 08:06 PM Report #457466 Posted May 22, 2012 at 08:06 PM 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.
HappyHippyHippo Posted May 22, 2012 at 08:06 PM Report #457467 Posted May 22, 2012 at 08:06 PM já procuraste na forum como te disseram ??? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
pedrosorio Posted May 23, 2012 at 06:07 AM Report #457516 Posted May 23, 2012 at 06:07 AM 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.
HappyHippyHippo Posted May 23, 2012 at 08:26 AM Report #457521 Posted May 23, 2012 at 08:26 AM nop ... foi o pmg: http://www.portugal-a-programar.pt/topic/53092-euromilhoes-totobola-e-totoloto-em-c/page__hl__%2Bnumeros+%2Btotoloto IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
pedrosorio Posted May 23, 2012 at 11:29 AM Report #457565 Posted May 23, 2012 at 11:29 AM nop ... foi o pmg: http://www.portugal-...meros +totoloto Nop... Fui eu 🙂 http://www.portugal-a-programar.pt/topic/52921-ajuda-com-classes/page__p__454168#entry454168 Embora seja óptimo a informação propagar-se no fórum, é para isso que ele serve. Não respondo a dúvidas por mensagem.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now