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 << '
';
}
#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%。
如果 你再加上什么 条件,重复 的 概率 可以 提高 或 可以 下降。
这才叫 随机。
随机数为均匀分布。
当你 取较多 个 数 时,它必然 有 重复。
例如 取 51 个 数 时,有 1 个 重复 的 概率 几乎为 80-90%。
如果 你再加上什么 条件,重复 的 概率 可以 提高 或 可以 下降。
这才叫 随机。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯