【发布时间】:2020-10-03 09:22:07
【问题描述】:
我正在审查我认为基于概率运行的代码。我想验证它是否属实。以下代码 sn-p 是否有 80% 的时间运行?如果我们的工作只是在 80% 的时间内运行代码,我不太明白为什么要使用 1000。
if(rand()%1000<1000*0.8){
...
}
【问题讨论】:
标签: c random probability
我正在审查我认为基于概率运行的代码。我想验证它是否属实。以下代码 sn-p 是否有 80% 的时间运行?如果我们的工作只是在 80% 的时间内运行代码,我不太明白为什么要使用 1000。
if(rand()%1000<1000*0.8){
...
}
【问题讨论】:
标签: c random probability
它将运行大约 80% 的时间。
rand() 返回一个介于 0 和 RAND_MAX 之间的数字,可能是 2,147,483,647rand() % 1000 将该范围缩小到 0-999,尽管该范围的前半部分左右的一些数字会稍微更常见,因为 RAND_MAX 不能被 1,000 整除1000 * 0.8 才800此处使用 1,000 是任意的。表示 80% 的更清晰的方式是:
if (rand() % 100 < 80)
或者只是:
if (rand() < RAND_MAX * 0.8)
【讨论】: