Aleatoriedade em C

Como tornar seus programas mais flexíveis e com sistemas aleatórios bem úteis em qualquer lugar.

[ Hits: 38.150 ]

Por: Lord Arthas Menethil em 21/06/2006


Introdução



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.

    Próxima página

Páginas do artigo
   1. Introdução
   2. Colocando em prática 1
   3. Colocando em prática 2
   4. Finalização
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Criando programas com suporte a arquivos de configuração com a libConfuse

Reprodução de arquivos WAV com SDL_mixer e linguagem C

Aprendendo a utilizar o GNU Debugger (parte 1)

Utilizando a biblioteca NCURSES - Parte I

Criando um sistema operacional com ASM e C++

  
Comentários
[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.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts