Pular para o conteúdo

Aleatoriedade em C

Como tornar seus programas mais flexíveis e com sistemas aleatórios bem úteis em qualquer lugar.
Lord Arthas Menethil Dark_Avatar
Hits: 40.042 Categoria: C/C++ Subcategoria: Miscelânea
  • Indicar
  • Impressora
  • Denunciar

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.

   1. Introdução
   2. Colocando em prática 1
   3. Colocando em prática 2
   4. Finalização
Nenhum artigo encontrado.

Substituindo a biblioteca conio.h no Linux usando ncurses curses.h

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

Criando aplicativos para o Mac OS X no GNU/Linux

Programando com uma granada de mão: uma visão da linguagem C

Criação e uso de um interpretador de script BrainFuck em C++

#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 é [*****] :)
#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

Entre na sua conta para comentar.