C++ 从 1 到一个非常大的数(例如 2500 万)的随机数

C++ Random number from 1 to a very large number (e.g. 25 million)

你会如何制作一个生成 1 到 2500 万个随机数的函数?

我考虑过使用 rand(),但我认为最大数量 RAND_MAX 是 = 32000(大约)是否正确?

有没有解决这个问题的方法,一种既不降低选择极低号码的概率也不增加选择高/中号码的可能性的方法?

编辑:@Jamey D 的方法完全独立于 Qt。

看看ran3

http://www.codeforge.com/read/33054/ran3.cpp__html

你应该可以从中得到你想要的。

Ran3(至少在我还在做计算建模的时候)比 rand() 更快,分布更均匀,尽管那是几年前的事了。它returns一个随机整数值。

例如从上面的link获取源码:

int main() {
   srand(time(null));

   int randomNumber = ran3(rand()) % 25000000;
   int nextRandomNumber = ran3(randomNumber);
}

您可以(应该)使用新的 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);