gpt4 book ai didi

C++ 生成随机数

转载 作者:IT老高 更新时间:2023-10-28 21:37:29 24 4
gpt4 key购买 nike

我的输出是 20 个随机 1,而不是介于 10 和 1 之间,谁能解释为什么会这样?

#include <iostream> 
#include <ctime>
#include <cstdlib>

using namespace std;

int main()
{
srand((unsigned)time(0));
int random_integer;
int lowest=1, highest=10;
int range=(highest-lowest)+1;
for(int index=0; index<20; index++){
random_integer = lowest+int(range*rand()/(RAND_MAX + 1.0));
cout << random_integer << endl;
}
}

output: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

最佳答案

因为,在您的平台上,RAND_MAX == INT_MAX

表达式range*rand() 的值永远不能大于INT_MAX。如果数学表达式大于 INT_MAX,则整数溢出将其减少到 INT_MININT_MAX 之间的数字。将其除以 RAND_MAX 将始终产生零。

试试这个表达式:

random_integer = lowest+int(range*(rand()/(RAND_MAX + 1.0)))

关于C++ 生成随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9484588/

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