【发布时间】:2013-11-12 07:04:21
【问题描述】:
我正在尝试从 1 - 99,999,999 生成一个随机数 但是,它从来没有达到那么高。我认为这与 int 的大小有关。
这是我正在尝试的
(1 + rand() % 99999999)
谢谢
【问题讨论】:
-
什么平台/编译器?
-
RAND_MAX很可能是 32k。使用<random>。反正好多了。 -
我很确定
int可以包含更多内容。 -
除了是一个糟糕的公式之外,我认为您不知道 RAND_MAX 对于您当前的实现的值吗?我认为这就是您将使用此机制看到的限制。 (如果您使用的是 VC++,它们的 32 位 RAND_MAX 仅为 0x7FFF 或 65535)。请参阅 C++ 11 标准库中的 <random>,并使用 that。它比 crap-legacy 接口更强大,并为您管理模数概率平衡。
std::random_device+<<choose your engine>>+std::uniform_int_distribution一起做你想做的事。 -
如果你可以访问 c++11 - channel9.msdn.com/Events/GoingNative/2013/… - 不要使用 rand。
标签: c++