No entanto, aqui estão outras coisas para apreciar antes de codificar que. Números aleatórios gerados por C ++ 20 seguem uma sequência. Existem muitas dessas seqüências, então números aleatórios não são verdadeiramente aleatórios. O usuário do programa dificilmente poderá saber qual sequência o programador escolheu e como determinar o próximo número, quando a função aleatória é chamada, no mesmo código.
Cada sequência tem um número inicial. A semente está relacionada ao número inicial de uma sequência. Cada sequência depende da semente e da distribuição de sequência. A distribuição de sequência é o perfil da sequência.
Este artigo explica como preencher uma matriz com números aleatórios começando com as classes: random_device, default_random_engine e uniform_int_distribution. Essas classes estão todas na biblioteca aleatória que devem ser incluídas. O esqueleto de um programa para preencher uma matriz de 10 elementos, com números aleatórios, é o seguinte:
#incluirObserve que qualquer tipo aritmético pode ser usado como tipo de elemento para a matriz. O tamanho da matriz é 10. No entanto, qualquer número de números aleatórios pode ser obtido.
Motor e distribuição
Neste tópico, um motor é um gerador de números aleatórios.
Random_Device
Esta é uma aula da qual os objetos são instantados. Um objeto desta classe é um dispositivo e não um motor. Isso precisa de um gerador para ser útil. Um gerador pode tomar um argumento random_device como argumento.
default_random_engine
Um mecanismo neste tópico gera números aleatórios. Existem diferentes motores dos quais o programador pode escolher. Isso deve ser escolhido quando o programador não tem certeza de qual motor escolher. Esta é uma aula da qual os objetos são instantados. É preciso um objeto random_device como argumento.
uniform_int_distribution
Existem muitos perfis de distribuição de sequências que o programador pode escolher. O escolhido para este artigo é: uniform_int_distribution. Esta é uma classe a partir da qual os objetos podem ser criados. Sua construção leva um motor como argumento, bem como os números de limite inferior e superior para os números aleatórios. Na verdade é um modelo de aula. Uma de suas sintaxes de construção é:
Explícito uniforme_int_distribution (Inttype A, Inttype B = numeric_limitsAs três declarações a seguir funcionam juntas:
Random_Device Rd;De 4 a 13 são dez números inteiros, incluindo os limites inferiores e superiores. A especialização do modelo para o objeto de distribuição, dist, é int. Portanto, dez números aleatórios diferentes podem ser escolhidos a partir desse intervalo (4 - 13). Observe que o argumento para Eng () é rd () e não rd. Observe também que qualquer tipo aritmético pode ser a especialização do modelo para esta construção de distribuição.
A partir deste código, para obter o próximo número aleatório, use "dist (Eng);" .
Produzindo dez números inteiros aleatórios
O programa a seguir, produz dez números inteiros aleatórios, de 4 a 13 inclusive.
#incluirA saída do computador do autor é:
7 10 4 10 6Alguns números ocorreram mais de uma vez. O programa começa com a inclusão da biblioteca iostream para entrada e saída. Depois disso, a biblioteca aleatória é incluída números aleatórios forr. A próxima linha é uma declaração e não uma diretiva. Termina com um semicolon. Ele insiste que qualquer nome, não precedido com "std ::" é do espaço de nome padrão.
Depois, há a função principal C ++. As três primeiras declarações da função principal foram explicadas, anteriormente. No próximo segmento de código, o dist (Eng) produz o próximo número aleatório; Obviamente, dentro do intervalo (inclusive), dado como argumentos ao construtor de distribuição.
Preenchendo uma matriz com números aleatórios
No código acima, dez números aleatórios foram produzidos com a expressão, dist (Eng). Foi digitado dez vezes. Pode ser digitado uma vez e ser chamado dez vezes, se feito em um loop for. O loop for terá que iterar dez vezes. Nesta situação, o número aleatório de retorno não será enviado ao terminal (tela); Ele será enviado para o próximo local do elemento, da matriz. O programa a seguir ilustra o seguinte:
#incluirA saída do computador do autor, desta vez, é:
9 8 12 10 8 10 8 5 4 11Observe como o primeiro loop foi codificado. Obviamente, qualquer intervalo pode ser escolhido, o seguinte programa usa um intervalo de 0 a 100:
#incluirA saída do computador do autor, desta vez, é:
43 52 52 24 90 81 21 72 33 42Embora o alcance tenha mais de dez números inteiros, apenas dez números aleatórios foram produzidos, conforme decidido pelo primeiro loop for.
Conclusão
Realize o procedimento a seguir para preencher uma matriz com números aleatórios: gerar um número aleatório e colocar na matriz, como o primeiro elemento. Gerar outro número aleatório e coloque -se, como o segundo elemento. Gerar um terceiro número aleatório e coloque -se, como o terceiro elemento. Continue assim até que o número de números aleatórios seja atingido. O seguinte segmento de código é importante:
int arr [10];