基于C语言的百分比的概率运行

问题描述 投票:0回答:1

我正在审查一个我认为是基于概率运行的代码。我想验证一下这是不是真的。下面的代码片段是否有80%的时间在运行?我不太明白,如果我们的工作仅仅是在80%的时间内运行一段代码,为什么要使用1000呢?

if(rand()%1000<1000*0.8){
 ...
   }
c random probability
1个回答
2
投票

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

  • rand() 返回一个介于0和 RAND_MAX 大概是2,147,483,647个。
  • rand() % 1000 把这个范围缩小到0-999,不过在这个范围的前半部分左右的一些数字会稍微常见一些,因为 RAND_MAX 不等式
  • 1000 * 0.8 仅为800

这里使用1,000是随意的。更明确的表示80%的方式是:。

if (rand() % 100 < 80)

或只是:

if (rand() < RAND_MAX * 0.8)
© www.soinside.com 2019 - 2024. All rights reserved.