Várias vezes ao codarmos algo em C, nos deparamos com coisas que necessitam ser aleatórias, como em um jogo por exemplo, precisa-se de sistemas aleatórios para um item que será deixado por alguém após morrer por exemplo, ou em geração de senhas, coisas assim. Existem várias formas para se obter isso, a principal é noção de algumas funções em C e principalmente criatividade.
Algumas funções
Irei citar agora algumas funções que sempre serão usadas praticamente, para poder ter aleatoriedade.
Algumas funções que dão muita ajuda, muita mesmo, para aleatoriedade são srand() e rand().
A função srand tem o seguinte protótipo:
void srand ( unsigned int seed );
A utilidade dela é rodar um "sistema aleatório", para o rand() retornar algo novo sempre, caso srand não for declarada, rand vai gerar sempre o mesmo número.
A utilização dela é assim: você declara o tempo de refresh dentro de srand, mais ou menos assim:
srand(time(NULL));
Para usar time() precisa-se declarar a biblioteca time.h. Quando declarada aquele modo, não haveria tempo determinado para srand gerar um novo número.
Agora a função rand() já é para jogar o número aleatório que srand gerou caso ela tenha sido declarada. O protótipo dela é esse:
int rand ( void );
Você pode usa-la assim:
printf("Um número aleatório: %d
", rand()%10);
Esse %10 serviria para delimitar o máximo que rand poderia chegar, que seria algo menor que 10.
[1] Comentário enviado por
pacman em 21/06/2006 - 22:40h:
Lembrando que rand() gera um numero aleatório positivo entre 0 e RANDMAX, definida na stdlib.h
se vc quiser gerar numeros aleatórios entre 0 e X vc pode fazer :
X * rand()/(RANDMAX+1.0);
e entre X e Y
X + ((Y - X) * rand()/(RANDMAX+1.0));
usar o %10 para limitar um gerador de numeros aleatórios vicia um pouco o resultado.
[2] Comentário enviado por
tralsl em 17/02/2007 - 22:22h:
alguem sabe dizer se
random("numero max-1");
funciona?
[3] Comentário enviado por
rockstore6 em 23/07/2007 - 08:11h:
muito bom o assunto..... cara esse site é foda :)
[4] Comentário enviado por
Gilfran em 26/09/2007 - 16:42h:
Parabéns por explorar essa funcionalidade, muitas vezes passamos sufoco pensando em uma forma de elaborar algo do tipo e temos a função já pronta às nossas mãos.
Abraços,
"Gil"
www.tux-ce.org
[5] Comentário enviado por
mva em 12/12/2008 - 03:35h:
Fala galera, blz??
É o seguinte... Depois de um semestre suado, estou aproveitando as ferias e tentando fazer um joguinho em C do tipo come-come...
O problema esta em fazer com que as comidas sejam colocadas de forma aleatoria dentro da tela...
Tentei usar as funcoes rand e srand, porem quando o faco, aparece um erro dizendo que algumas funcoes (que antes estavam funcionando perfeitamente) nao estao referenciadas...
Quero deixar claro que o compilador nao acusou erro em relacao as funcoes rand e srand, mas sim em outras funcoes construidas por mim e que antes estavam funcionando perfeitamente...
Todos os cabecalhos nos quais as funcoes estao definidas e codificadas foram incluidos... Nao faco ideia do porquê desse erro...
Alguem pode me ajudar??
Vlw!!!!!!!!!!!!!!!!!!
[6] Comentário enviado por
jemessonlima em 25/03/2010 - 15:20h:
caramba aleatoriedade , gostaria bastante da ajuda de vocês, daqui do vivaolinux, ok.
Trata-se do algoritmo Random Permutation of n letters (RANPER) ele se trata de uma determinada quantidade chamada de N, gerar termos aleatórios usando a técnica do gray code. o algoritmo encontra-se em FORTRAN No livro Combinatorial Algorithms do Wilf. Gostaria da ajuda de vocês.
[7] Comentário enviado por
jemessonlima em 25/03/2010 - 15:21h:
o código pode ser em java ou c , blz.
[8] Comentário enviado por
jemessonlima em 25/03/2010 - 15:26h:
aconselho o uso do mallocX.