Вы ищете метод равномерной генерации случайных чисел в заданном диапазоне [мин, макс].
Недостатки rand
Ваша текущая реализация с использованием rand() и оператора модуля может не обеспечивать равномерное распределение, поскольку его поведение зависит от RAND_MAX и самого диапазона.
C 11 и генерация единого диапазона
В C 11 std::uniform_int_distribution предлагает решение, адаптированное к этой потребности :
#includestd::uniform_int_distribution distr(min, max); std::random_device rand_dev; std::mt19937 generator(rand_dev()); int random_number = distr(generator);
Дополнительные возможности
Заголовок
Контейнер Перетасовка
Чтобы перетасовать контейнер, используйте 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
Если использование компилятора C 11 невозможно рассмотрите Boost.Random, интерфейс которого аналогичен интерфейсу аналога C 11.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3