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

时间:2015-12-10 19:02:19

标签: c++ random numbers largenumber

你如何创建一个产生1到2,500万的随机数的函数?

我考虑过使用rand(),但我认为最大数量RAND_MAX = 32000(约会)是对的吗?

有没有解决方法,这种方法不会降低选择非常低数字的概率,也不会增加选择高/中数的可能性?

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

2 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:1)

看看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);
}