加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在C中生成随机数的最佳方法是什么?

发布时间:2020-12-16 09:13:54 所属栏目:百科 来源:网络整理
导读:生成随机数的最佳方法是什么? 解决方法 当且仅当: 你不是在寻找“完美的均匀性”或 你没有C 11支持,甚至没有TR1(因此你没有其他选择) 那么您可以考虑使用以下C风格的解决方案,(为了这个社区的声誉?见rand() Considered Harmful)是用透视字体编写的: 这是
生成随机数的最佳方法是什么?

解决方法

当且仅当:

>你不是在寻找“完美的均匀性”或
>你没有C 11支持,甚至没有TR1(因此你没有其他选择)

那么您可以考虑使用以下C风格的解决方案,(为了这个社区的声誉?见rand() Considered Harmful)是用透视字体编写的:

这是简单的C风格函数,它从最小值到最大值(包括最小值)的间隔生成随机数.这些数字似乎非常接近于均匀分布.

int irand(int min,int max) {
    return ((double)rand() / ((double)RAND_MAX + 1.0)) * (max - min + 1) + min;
}

并且在使用它之前不要忘记调用srand:

int occurences[8] = {0};

srand(time(0));
for (int i = 0; i < 100000; ++i)
    ++occurences[irand(1,7)];

for (int i = 1; i <= 7; ++i)
    printf("%d ",occurences[i]);

产量:14253 14481 14210 14029 14289 14503 14235

另外看看:
Generate a random number within range?
Generate random numbers uniformly over an entire range
并找到一些时间,至少观看上述video的前11分钟

除此以外:

使用<random>就像Kerrek SB已经指出的那样.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读