Como gerar números aleatórios em C Programming

Uma função matemática em programação C que é relativamente fácil de entender é a função rand (). Ele gera números aleatórios. Embora isso possa parecer bobagem, é a base para quase todos os jogos de computador já inventado. números aleatórios são um grande negócio na programação.

Um computador não é possível gerar números aleatórios. Em vez disso, ele produz o que é conhecido como pseudo-números aleatórios. Isso porque as condições dentro do computador pode ser replicado. Portanto, os matemáticos sérios zombam que qualquer valor um computador chama aleatório não é um número verdadeiramente aleatório. você pode ouvi-los escárnio?

Como para gerar números aleatórios

A função rand () é o mais simples de funções de números aleatórios do C. Ele requer o arquivo de cabeçalho stdlib.h, e tosse um valor int que é supostamente aleatória. Agora, isso é aleatório demonstra código de exemplo.

Agora, isso é RANDOM

#include #include int main () {int r, a, b-puts ( "100 Aleatório Numbers")-for(a=0-alt;20-a++){for(b=0-blt;5-b++){r=rand()-printf("%dt",r)-}putchar('n')-}return(0)-}

Agora, isso é aleatório usa um laço for aninhado para exibir 100 valores aleatórios. A função rand () na linha 13 gera os valores. A função printf () na linha 14 exibe os valores usando o caractere de conversão% d, que exibe valores int.

Exercício 1: Criar um novo projeto usando o código-fonte mostrado na Agora, isso é aleatório. Criar e executar a contemplar 100 valores aleatórios.

exercício 2: Modificar o código para que todos os valores exibidos estão na faixa de 0 a 20.

Aqui vai uma dica para agora, isso é aleatória: Use o operador de atribuição de módulo para limitar a gama de números aleatórios. O formato é semelhante a este:

r% =n-

r é o número retornado da função rand (). % = É o operador de atribuição de módulo. o símbolo n representa o limite do intervalo, mais 1. Após a instrução anterior, os valores voltaram estão no intervalo de 0 a n-1. Então, se você deseja gerar valores entre 1 e 100, você usaria a seguinte fórmula:

= valor (R% 100) + 1-

Como aumentar a aleatoriedade de numbersin de programação C

Só para lhe dar algum crédito aos matemáticos esnobes que afirmam que os computadores gerar números pseudo-aleatórios, execute o programa que você gerada a partir de Exercício 2. Observe a saída. Execute o programa novamente. Ver nada familiar?

A função rand () é bom para a geração de uma série de valores aleatórios, mas são valores previsíveis. Para tornar a saída menos previsível, você precisa semente o gerador de número aleatório. Isso é feito usando a função srand ().

Como a função rand (), a função srand () requer o cabeçalho stdlib.h, mostrado na Linha 2 em ainda mais aleatoriedade. A função requer um valor int não assinado, semente, que é declarado na Linha 6. A função scanf () na linha 10 lê no valor sem sinal usando o espaço reservado% u. Então, a função srand () usa o valor semente na Linha 11.

AINDA MAIS RANDOMNESS

#include #include int main () {unsigned sementes int r, a, b-printf ( "Entrada de um número aleatório de sementes: ")-scanf("%u",seed)-srand(seed)-for(a=0-alt;20-a++){for(b=0-blt;5-b++){r=rand()-printf("%dt",r)-}putchar('n')-}return(0)-}

A função rand () é usado na Linha 16, embora os resultados estão agora baseados na semente, que é definido quando o programa é executado.

Exercício 3: Criar um novo projeto usando o código-fonte apresentado em ainda mais aleatoriedade. Construa. Execute o programa algumas vezes, tentando valores diferentes de sementes. A saída é diferente a cada vez.

Infelizmente, os valores aleatórios que são gerados são ainda previsível quando você digita o mesmo número de sementes. Na verdade, quando o valor 1 é usado como a semente, você vê o mesmo # 147-random # 148- valores que você viu no Exercício 1, quando você nem sequer utilizar srand ()!

Tem que haver uma maneira melhor.

A melhor maneira de escrever um gerador de números aleatórios não é pedir que o usuário digite uma semente, mas sim para buscar uma semente de outro lugar. Em mais verdadeiramente aleatória do que nunca, o valor de semente é puxado do relógio do sistema usando a função time ().

MAIS DO QUE NUNCA verdadeiramente aleatório

#include #include #include int main () {int r,a,b-srand((unsigned)time(NULL))-for(a=0-alt;20-a++){for(b=0-blt;5-b++){r=rand()-printf("%dt",r)-}putchar('n')-}return(0)-}

A função time () retorna informações sobre a hora atual do dia, um valor que está em constante mutação. O argumento NULL ajuda a resolver alguns problemas, mas o tempo () retorna um valor em constante mudança.

A parte (não assinado) da declaração garante que o valor retornado pela função time () é um inteiro sem sinal. Essa é uma técnica conhecida como typecasting.

A linha inferior é que a função srand () é passado um valor de semente, cortesia da função time (), eo resultado é que a função rand () gera valores que são mais aleatória do que você deseja obter de outra forma.

Exercício 4: Digite o código-fonte do mais verdadeiramente aleatória do que nunca e construir o projeto. Executá-lo algumas vezes para garantir que os números são tão aleatório como o computador pode obtê-los.

menu