gpt4 book ai didi

c++ - Rand() % 14 只生成值 6 或 13

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:51:14 26 4
gpt4 key购买 nike

每当我运行以下程序时,返回值总是 6 或 13。

#include <iostream>
#include <fstream>
#include <ctime>
#include <cstdlib>
using namespace std;

//void randomLegs();
//void randomPush();
//void randomPull();
//void randomMisc();


int main(int argc, const char * argv[])
{
srand(time(NULL));
//randomLegs();
cout << rand() % 14;
return 0;
}

今天和昨天我已经运行了将近一百次程序。

谁能告诉我我做错了什么?

谢谢。

编辑:顺便说一句,如果我将 rand() 的范围更改为 13 或 15,它就可以正常工作。

最佳答案

根据 wikipedia ,Apple 的 MCG 随机数生成器中使用的乘数是 16807。它可以被 7 整除,所以 srand() 之后产生的第一个随机数只有一位熵 mod 14(也就是说,它只能取两个值)。

他们那里的随机数生成器很糟糕。不过,一个简单的解决方案是在 srand 之后立即调用 rand() 几次,然后丢弃结果。

关于c++ - Rand() % 14 只生成值 6 或 13,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28441158/

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