gpt4 book ai didi

c++ - rand() %4000000000UL 只给出小值

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:04:22 26 4
gpt4 key购买 nike

我对以下代码有疑问:

#include <iostream>
#include <ctime>

int main(){
unsigned long int blob;
srand(time(0));

for(int counter = 0; counter <= 100; counter++) {
blob = rand() % 4000000000UL ;
std::cout << blob << std::endl;
}//for
system("pause");
return 0;
} //main

在 codepad.org 上,它输出很大的值,例如

378332591
1798482639
294846778
1727237195
62560192
1257661042

但在 Windows 7 64 位上,它只输出很小的值(在 VS11 和 Code::Blocks 上测试编译)

10989
13493
13169
18581
17972
29

在此先感谢您帮助 c++ 学习者;)

最佳答案

rand() 只生成不超过其 RAND_MAX 的数字。

根据 MSDN ,在 Windows 上 RAND_MAX 仅为 32767,或 (2**15 - 1)(请注意,这是根据 C 标准(此处为 link to open group base spec,基于 C 标准)允许的最小 RAND_MAX)。

如果你想要更大的数字,你需要调用它更多次和位移位,例如:

long long int my_big_random = rand() ^ (rand() << 15) ^ ((long long int) rand() << 30);

(example on codepad)。

关于c++ - rand() %4000000000UL 只给出小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10074879/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com