使用随机数gen的相对概率

Cyb*_*hot 1 random probability

如果我有事件A,B,C的相对概率发生.

即P(A)= 0.45,P(B)= 0.35,P(C)= 0.20,

如何使用0到1之间的随机数生成器来表示?

即R =兰特(0,1)

if (R < 0.45)
   event A

else if(R < 0.35)
  event B

else if(R < 0.20)
  event C
Run Code Online (Sandbox Code Playgroud)

以上适用于两个事件A,B,但我认为由于存在重叠,上述情况对于三个或更多是错误的.

这显然是一个非常简单的问题,答案应该立即明显,但我看起来太愚蠢了.

Ern*_*ill 5

您必须一起添加概率.我正在显示明确的if/then语句,但是在带有循环的数组中使用概率很容易做到这一点,因此它可以非常动态.请注意,排序无关紧要.

if (R < 0.45)
   event A

else if(R < 0.45 + 0.35) // R < 0.80
  event B

else // (R must necessarily be < 0.45 + 0.35 + 0.20, or 1) 
  event C
Run Code Online (Sandbox Code Playgroud)