random number generator c
Este tutorial descreve o uso das funções rand () e srand () em detalhes para gerar números aleatórios em C ++:
Muitas vezes exigimos o uso de números aleatórios em nosso aplicativo para produzir simulações ou jogos e outros aplicativos que exigem eventos aleatórios.
Por exemplo, em um jogo de dados, sem eventos aleatórios, teremos o mesmo lado aparecendo cada vez que jogarmos os dados, gerando resultados indesejáveis.
Assim, torna-se necessário que tenhamos um gerador de números aleatórios à nossa disposição. No ambiente físico, podemos ter eventos aleatórios gerados, mas não é possível quando se trata de computadores.
=> Leia a série de treinamento Easy C ++.
Isso ocorre porque tudo em computadores é binário, ou seja, 0 ou 1 (verdadeiro ou falso) e nada no meio. Portanto, os computadores geralmente geram eventos previsíveis e não são capazes de gerar eventos aleatórios.
Em vez disso, os computadores simulam a aleatoriedade que é feita usando gerador de número pseudo-aleatório (PRNG) . C ++ tem um gerador de números aleatórios e pode ser usado com muitos dos aplicativos.
Neste tutorial, discutiremos as funções / abordagens para gerar números aleatórios em C ++ em detalhes.
O que você aprenderá:
- Gerador de número pseudo-aleatório (PRNG) em C ++
- Funções rand e srand em C ++
- Diferença entre rand () e srand ()
- C ++ Random Float
- Número aleatório C ++ entre 0 e 1
- Número aleatório C ++ entre 1 e 10
- perguntas frequentes
- Conclusão
- Leitura recomendada
Gerador de número pseudo-aleatório (PRNG) em C ++
Em geral, um gerador de números pseudoaleatórios (PRNG) pode ser definido como um programa que pega uma semente ou um número inicial e o transforma em algum outro número que é diferente da semente usando operações matemáticas.
Este processo é executado repetidamente, tomando o último número gerado todas as vezes. Cada vez que o número gerado não está relacionado aos números anteriores. Assim, este programa é capaz de gerar uma série de números que aparecem aleatoriamente.
A linguagem C ++ vem com um gerador de números pseudo-aleatórios embutido e fornece duas funções rand () e srand () que podem ser usadas para gerar números aleatórios.
Vamos discutir essas duas funções em detalhes.
teste de ferramentas de gerenciamento de dados de código aberto
Funções rand e srand em C ++
srand ()
Protótipo de função: void srand (semente int sem sinal);
Parâmetros: seed - Um valor inteiro a ser usado como seed pelo algoritmo gerador de número pseudo-aleatório.
Valor de retorno: Nenhum
Descrição: A função srand é usada para inicializar a sequência de números pseudo-aleatórios com um parâmetro chamado 'semente aleatória'. Faz com que a saída da função rand pareça aleatória. Caso contrário, a saída da função rand () será a mesma sempre que a chamarmos.
Portanto, se semearmos o gerador de número aleatório com a função srand (), ele iniciará o gerador do ponto que depende do valor do argumento passado para srand. Se definirmos o gerador de números aleatórios com a hora do sistema Por exemplo, antes da primeira chamada à função rand (), ela gerará os números aleatórios toda vez que executarmos o programa.
Observe que normalmente precisamos chamar a função srand () apenas uma vez antes da chamada à função rand () e não sempre que geramos números aleatórios.
rand ()
Protótipo de função: int rand (vazio);
Parâmetros: Nenhum
Valor de retorno: Um valor inteiro entre 0 e RAND_MAX.
Descrição: A função rand () gera o próximo número aleatório na sequência. O número gerado é o inteiro pseudoaleatório entre 0 e RAND_MAX. RAND_MAX é uma constante no cabeçalho geralmente definida com o valor 32767.
#include #include #include int main() { std::srand(static_cast(std::time(nullptr))); for (int count=1; count <= 100; ++count) { std::cout << std::rand() << ' '; // display 5 random numbers per row if (count % 5 == 0) std::cout << '
'; } return 0; }
Resultado:
No programa acima, geramos os primeiros 100 números aleatórios, fornecendo o relógio do sistema como a semente para a função srand. Neste programa, usamos as funções srand e rand. Observe que, por causa do relógio do sistema como semente, a saída gerada será diferente a cada vez que executarmos o programa.
Diferença entre rand () e srand ()
fileira() | srand () |
---|---|
Usado para gerar números aleatórios. | Semeia o PRNG usado pela função rand (). |
Chamado quantas vezes quisermos para gerar os números aleatórios. | Chamado apenas uma vez para ver o gerador de números aleatórios. |
Não aceita nenhum argumento. | Pega o parâmetro que é usado para propagar o gerador de números aleatórios. |
Retorna a sequência de números aleatórios cada vez que é chamado. | Não retorna um valor. |
C ++ Random Float
A função rand () que vimos acima por padrão retorna um valor inteiro que pode causar um estouro em certos casos. Assim, podemos usar float ou double value. Podemos gerar números aleatórios float lançando o valor de retorno da função rand () para ‘float’.
Assim, o seguinte irá gerar um número aleatório entre o float 0.0 e 1.0 (ambos inclusivos).
cout< Da mesma forma, a linha abaixo irá gerar um número aleatório entre 1,2 e 3,4
cout<<1.2 + static_cast (rand()) / ( static_cast (RAND_MAX/(3.4-1.2)));
Em nosso exemplo subsequente a seguir, usamos float aleatório para gerar a saída.
Número aleatório C ++ entre 0 e 1
Podemos usar as funções srand () e rand () para gerar números aleatórios entre 0 e 1. Observe que temos que converter a saída da função rand () para o valor decimal float ou double.
O valor de retorno padrão da função rand (), ou seja, o inteiro é inadequado para exibir números aleatórios entre 0 e 1, que são frações.
O programa C ++ fornecido abaixo exibe os primeiros cinco números aleatórios entre 0 e 1.
melhor software de otimização para windows 10
#include #include using namespace std; int main() { cout<<'Random numbers generated between 0 and 1:'< Resultado :

Vemos que a saída do programa é o número aleatório entre 0 e 1 que são frações.
Se não lançarmos o valor de retorno da função rand () para float ou double, teremos 0 como o número aleatório.
Número aleatório C ++ entre 1 e 10
O próximo exemplo é gerar números aleatórios entre 1 e 10. A seguir está o programa C ++ que gera números aleatórios.
Chamamos a função srand com o relógio do sistema e, em seguida, chamamos a função rand com os operadores do módulo 10.
#include #include #include using namespace std; int main() { srand(time(0)); // Initialize random number generator. cout<<'Random numbers generated between 1 and 10:'< Resultado:

No programa acima, geramos os primeiros 10 números aleatórios entre 1 e 10. Observe que toda vez que o programa for executado, ele gerará diferentes conjuntos de números por causa da função srand sendo chamada.
perguntas frequentes
P # 1) Qual é o arquivo de cabeçalho para a função Random em C ++?
Responda: As funções para gerar números aleatórios, rand e srand são definidas em< cstdlib > cabeçalho de C ++.
Q # 2) O que é Rand_max em C ++?
Resposta: RAND_MAX é uma constante no cabeçalho geralmente definida com o valor 32767. O gerador de números pseudo-aleatórios (PRNG) gera números aleatórios entre 0 e RAND_MAX.
P # 3) Como funciona a função aleatória?
Responda: C ++ suporta duas funções aleatórias, ou seja, srand () e rand (). A função srand () semeia o gerador de número aleatório usado pela função rand () que gera a sequência de número aleatório dependendo da semente inicial fornecida.
P # 4) Como você se sai com o tempo?
Responda: A função srand semeia o gerador de números pseudo-aleatórios (PRNG) usado pela função rand (). É uma prática padrão usar o resultado de uma chamada para time (0) como semente. Esta função de tempo retorna o valor, um número de segundos desde 00:00 horas, 1º de janeiro de 1970, UTC (carimbo de data / hora UNIX atual).
Assim, o valor da semente muda a cada segundo. Portanto, toda vez que srand é chamado com a função de tempo, um novo conjunto de números aleatórios é gerado.
Conclusão
Discutimos a geração de números aleatórios em detalhes neste tutorial. As linguagens de programação ou, em geral, os computadores não geram números aleatórios, pois são projetados para fornecer resultados preditivos. Portanto, precisamos simular a aleatoriedade.
Para simular a aleatoriedade, usamos o gerador de números pseudo-aleatórios (PRNG) que está embutido no C ++. Assim, usando as duas funções, rand () e srand (), podemos gerar números aleatórios em C ++.
A função srand () é usada para fornecer semente para gerar números aleatórios enquanto a função rand () gera o próximo número aleatório na sequência.
=> Procure toda a série de treinamento C ++ aqui.
Leitura recomendada
- Número aleatório C # e gerador de string aleatório C # com exemplos de código
- Tutorial da função principal do Python com exemplos práticos
- Tutorial de Pipes Unix: Pipes em Programação Unix
- Recursão em C ++
- Funções de amigo em C ++
- Polimorfismo em C ++
- Programação orientada a objetos em C ++
- OOP Java: introdução à programação orientada a objetos em Java