Bernardo Vieira Posted February 26, 2013 at 01:18 AM Report #497023 Posted February 26, 2013 at 01:18 AM bem, a dúvida é essa mesmo! eu fiz um código simples, para gerar chaves, só que eu quero que varie, mas sai sempre igual! #include <string.h> #include <stdio.h> #include <stdlib.h> main () { char letras[27]="abcdefghijklmnopqrstuvwxyz"; int num,tipo; char frs[7]=""; int l; for(l=0;l!=6;l++) { tipo=rand()%2; if(!tipo) { num=rand()%26; frs[l]=letras[num]; } else { num=rand()%10; char letter[2]; sprintf(letter,"%d",num); frs[l]=letter[0]; } } printf("%s\n",frs); system("pause"); }
brunoais Posted February 26, 2013 at 08:09 AM Report #497026 Posted February 26, 2013 at 08:09 AM O que é que sai? "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%.
pmg Posted February 26, 2013 at 09:43 AM Report #497028 Posted February 26, 2013 at 09:43 AM (edited) A função rand() é uma função geradora de numeros pseudo-aleatórios. A ideia é poder-se repetir os números que saem (para correr versões diferentes dum programa com os mesmos dados, por exemplo). Cada sequência de numeros pseudo-aleatórios tem um numero. Se não escolheres uma sequência especifica, o rand() usa sempre a sequencia numero 1. Para escolher uma sequencia especifica usa srand() // sequencia 1 for (k = 0; k < 100; k++) printf("%d ", rand()); // sequencia 1 srand(1); for (k = 0; k < 100; k++) printf("%d ", rand()); // sequencia 123456 srand(123456); for (k = 0; k < 100; k++) printf("%d ", rand()); Mas se escolheres sempre a sequencia especifica 123456, tambem vai ser repetir os numeros (embora sejam diferentes dos numeros da sequencia 1). A solução mais comum é escolher para numero da sequencia o numero de segundos desde a meia-noite de 1970-01-01. Este numero varia de segundo a segundo, por isso se nunca correres o programa no mesmo segundo, nunca apanhas a mesma sequencia. #include <stdio.h> #include <stdlib> #include <time.h> int main(void) { srand(time(0)); // escolher sequencia baseada na hora actual for (int k = 0; k < 100; k++) printf("%d ", rand()); return 0; } IMPORTANTE! Escolhe a sequência uma única vez por run do programa. Principalmente, nunca ponhas o srand() dentro dum loop. Edited February 26, 2013 at 10:33 AM by pmg 1 Report What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
Bernardo Vieira Posted February 26, 2013 at 12:39 PM Author Report #497039 Posted February 26, 2013 at 12:39 PM (edited) @pmg ahh, é isso entao! Porque eu queria um numero que fosse sempre diferente! é isso mesmo, obrigado 🙂 agora tenho de ir para a escola, depois vou testar, se der errado eu volto cá! mas obrigado 🙂 @brunoais obrigado tbm 🙂 #edit testei aqui enquato almoçava, deu certo, obrigado 🙂 Edited February 26, 2013 at 12:44 PM by Bernardo Vieira
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