Várias técnicas podem ser usadas em C ++ para produzir flutuadores aleatórios. Para uma variedade de aplicações, incluindo simulações e produção de números aleatórios para testes, pode ser benéfico gerar flutuadores aleatórios em c++. Este artigo passará por diferentes técnicas para criar flutuadores aleatórios em c++.
Números de flutuação aleatória em c++
Flutuadores aleatórios podem ser gerados em C ++ usando duas maneiras.
1: Usando a função rand ()
Nós podemos gerar flutuadores aleatórios Usando o padrão da biblioteca C ++ rand () função. Podemos gerar um número inteiro via rand () função, converta -o em um flutuador e depois use -o para gerar flutuadores aleatórios. Para fazer isso, podemos dividir o número inteiro gerado por um grande número, para obter um número entre 0 e 1. A flutuador aleatório pode então ser obtido multiplicando esse valor pela gama desejada de carros alegóricos. Por exemplo, o código a seguir pode ser usado para produzir um flutuador aleatório entre 0 e 1:
#incluir
#incluir
#incluir
int main ()
srand (tempo (nulo));
para (int i = 0; i < 10; i++)
flutuador r = rand () / static_cast(Rand_max);
std :: cout << r << std::endl;
retornar 0;
No código acima, o rand () A função é usada para gerar 10 Valores aleatórios de ponto flutuante entre 0 e 1 e o tempo() A função é usada para semear o gerador de números aleatórios. O rand () O método gera um número completamente aleatório e está entre 0 e rand_max. Para garantir que a sequência de números aleatórios seja única cada vez que o programa é executado, o Srand (tempo (nulo)) A função cria a semente para o gerador de números aleatórios, dependendo do horário atual.
Saída
No entanto, utilizando o rand () técnica para gerar flutuadores aleatórios tem várias limitações. Os números não são verdadeiramente aleatórios, pois um algoritmo foi empregado para gerá -los. A distribuição dos valores gerados também não é uniforme, pois certos valores são produzidos com mais frequência do que outros.
2: Usando STD :: uniform_real_distribution
Usar a biblioteca aleatória C ++ 11 é um método adicional de produção flutuadores aleatórios. Para produzir um número aleatório de diferentes tipos, esta biblioteca oferece várias distribuições. Podemos usar o uniform_real_distribution distribuição para produzir flutuadores aleatórios. Esta distribuição produz flutuadores aleatórios Dentro de um determinado intervalo usando dois argumentos: um valor mínimo e um valor máximo.
Dê uma olhada neste código para gerar flutuadores aleatórios usando uniform_real_distribution.
#incluir
usando namespace std;
int main ()
default_random_engine rand_number;
uniform_real_distributiondistribuição (0.0,5.0);
para (int i = 1; i < 10; i++)
cout << distribution(rand_number) << '\n';
retornar 0;
No código acima, estamos usando a biblioteca aleatória que cria 5 ponto flutuante aleatório valores entre 0 e 4. Ele gera uma distribuição uniforme de objeto de distribuição com um intervalo de [0.0, 5.0] e um objeto de mecanismo de número aleatório padrão Rand_Number. O loop for usa o objeto de distribuição e o mecanismo gen para produzir 5 números inteiros aleatórios e depois usa cout para exibi -los no console.
Saída
O problema de usar std :: uniform_real_distribution é que não podemos produzir sequências aleatórias, o que resulta em sequências semelhantes a cada vez. A frequência ou probabilidade em um intervalo específico pode ser calculada usando essa abordagem, mas em um grande número de testes.
Conclusão
Em C ++, existem várias abordagens para produzir flutuadores aleatórios. Uma estratégia pode ser mais apropriada do que os outros, dependendo das circunstâncias. A classe de distribuição real uniforme na biblioteca aleatória C ++ 11 fornece uma função de membro que gera valores contínuos distribuídos uniformemente ou números reais aleatórios de uma faixa de entrada. O rand () Função oferece um método simples para produzir flutuadores aleatórios. A técnica selecionada dependerá das necessidades do programador e das demandas de seu software.