优雅的方式来产生关于百分比的随机值?(Elegant way to generate a rando

2019-08-01 01:54发布

我有N个值(整数)。 我想知道什么是最优雅的方式来随机挑选关于百分比的值之一。 例如,对于一个3个值例如:

  • 值1有30%的几率得到回升
  • 值2有12%的几率得到回升
  • 值3有45%的机会得到回升

我需要这个程序我与Java,但伪码算法或以任何其他语言的代码开发将是确定的。

Answer 1:

这样做不计算值的使用是一种方式

double d = Math.random() * 100;
if ((d -= 30) < 0) return 1;
if ((d -= 12) < 0) return 2;
if ((d -= 45) < 0) return 3;
return 4;


Answer 2:

算法:

  • 产生一个随机数( n之间) 01 (假设你的随机发生器被很好地分布)
  • 如果n < 0.30返回值1
  • 如果n < 0.42返回值2
  • 否则,如果n < 0.87返回值3
  • 别人说你好(你的号码加起来还不到100%)


文章来源: Elegant way to generate a random value regarding percentage?