优雅的方式来生成关于百分比的随机值?
我有N个值(整数)。 我想知道在百分比中随机选择其中一个值的最优雅方式是什么。 例如,对于3值示例:
- 价值1有30%的机会被选中
- 价值2有12%的机会被选中
- 价值3有45%的机会被选中
我需要这个用于我用Java开发的程序,但是伪代码算法或任何其他语言的代码都可以。
在不计算要使用的值的情况下,这样做的一种方法是
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;
建议的算法:
- 生成
0
到1
之间的随机数(n
)(假设您的随机生成器分布均匀) - 如果
n < 0.30
返回值1
- 如果
n < 0.42
返回值2
- 否则,如果
n < 0.87
返回值3
- 否则说你好(你的数字加起来不是100%)