C++ Случайное число от 1 до очень большого числа (например, 25 миллионов)
Как бы вы сделали функцию, которая генерирует случайное число от 1 до 25 миллионов?
Я думал об использовании rand()
но я прав, думая, что максимальное количество, RAND_MAX
это = 32000 (там о)?
Есть ли способ обойти это, способ, который не уменьшает вероятность выбора очень низких чисел и не увеличивает вероятность выбора больших / средних чисел?
Редактировать: метод @Jamey D работал совершенно независимо от Qt.
2 ответа
Вы могли (должны) использовать новый C++11 std::uniform_real_distribution
#include <random>
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_real_distribution<> distribution(1, 25000000);
//generating a random integer:
double random = distribution(gen);
Посмотрите на ran3
http://www.codeforge.com/read/33054/ran3.cpp__html
Вы должны быть в состоянии получить то, что вы хотите от него.
Ran3 (по крайней мере, когда я еще занимался компьютерным моделированием) быстрее, чем rand() с более равномерным распределением, хотя это было несколько лет назад. Возвращает случайное целочисленное значение.
Например, получить исходный код по ссылке выше:
int main() {
srand(time(null));
int randomNumber = ran3(rand()) % 25000000;
int nextRandomNumber = ran3(randomNumber);
}