【问题标题】:Probabilistic Running Based on Percentage in CC语言中基于百分比的概率运行
【发布时间】:2020-10-03 09:22:07
【问题描述】:

我正在审查我认为基于概率运行的代码。我想验证它是否属实。以下代码 sn-p 是否有 80% 的时间运行?如果我们的工作只是在 80% 的时间内运行代码,我不太明白为什么要使用 1000。

if(rand()%1000<1000*0.8){
 ...
   }

【问题讨论】:

    标签: c random probability


    【解决方案1】:

    它将运行大约 80% 的时间。

    • rand() 返回一个介于 0 和 RAND_MAX 之间的数字,可能是 2,147,483,647
    • rand() % 1000 将该范围缩小到 0-999,尽管该范围的前半部分左右的一些数字会稍微更常见,因为 RAND_MAX 不能被 1,000 整除
    • 1000 * 0.8 才800

    此处使用 1,000 是任意的。表示 80% 的更清晰的方式是:

    if (rand() % 100 < 80)
    

    或者只是:

    if (rand() < RAND_MAX * 0.8)
    

    【讨论】:

    • 是的,最后的语法更容易理解。我不知道为什么作者写了 1000
    猜你喜欢
    • 2013-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    • 1970-01-01
    相关资源
    最近更新 更多