Você procura um método para gerar números aleatórios uniformemente dentro de um intervalo especificado [min, max].
Falhas com rand
Sua implementação atual usando rand() e o operador módulo pode não garantir uma distribuição uniforme, pois seu comportamento depende de RAND_MAX e do range em si.
C 11 e Uniform Range Generation
Em C 11, std::uniform_int_distribution oferece uma solução adaptada a esta necessidade:
#includestd::uniform_int_distribution distr(min, max); std::random_device rand_dev; std::mt19937 generator(rand_dev()); int random_number = distr(generator);
Recursos adicionais de
O cabeçalho
Embaralhamento de contêiner
Para embaralhar um contêiner, empregar std::shuffle:
#include#include std::vector vec = {4, 8, 15, 16, 23, 42}; std::random_device random_dev; std::mt19937 generator(random_dev()); std::shuffle(vec.begin(), vec.end(), generator);
Boost.Random
Se usar um compilador C 11 não for viável , considere Boost.Random, que apresenta uma interface semelhante à contraparte C 11.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3