永发信息网

C++编译中用srand()和rand()%100产生的随机数为什么有两个以上相同的数

答案:2  悬赏:40  手机版
解决时间 2021-04-04 07:33
  • 提问者网友:夢醒日落
  • 2021-04-03 12:05
C++编译中用srand()和rand()%100产生的随机数为什么有两个以上相同的数
最佳答案
  • 五星知识达人网友:时间的尘埃
  • 2021-04-03 13:45
rand函数本身有这个bug,在同一秒内取值可能会相同。追问有没有一种方法产生完全不同的随机数?追答你可以使用C++新标准random来产生随机数
#include 

#include 

int main()

{

    std::random_device rd;

    std::mt19937 gen(rd());

    std::uniform_int_distribution<> dis(1, 6);

    for(int n=0; n<10; ++n)

        std::cout << dis(gen) << ' ';

    std::cout << '
';

}
全部回答
  • 1楼网友:低血压的长颈鹿
  • 2021-04-03 14:02
rand()%100 是 在 0 到 99 之间 取随机 数。
随机数为均匀分布。
当你 取较多 个 数 时,它必然 有 重复。
例如 取 51 个 数 时,有 1 个 重复 的 概率 几乎为 80-90%。
如果 你再加上什么 条件,重复 的 概率 可以 提高 或 可以 下降。
这才叫 随机。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯