Java 生成有关百分比的随机值的优雅方法?
我有N个值(整数)。我想知道什么是最优雅的方式来随机选择其中一个关于百分比的值。例如,对于3个值的示例:Java 生成有关百分比的随机值的优雅方法?,java,algorithm,random,percentage,Java,Algorithm,Random,Percentage,我有N个值(整数)。我想知道什么是最优雅的方式来随机选择其中一个关于百分比的值。例如,对于3个值的示例: 值1有30%的几率被拾取 值2有12%的几率被选中 值3有45%的几率被选中 我用Java开发的程序需要这个,但伪代码算法或任何其他语言的代码都可以。建议的算法: 在0和1之间生成一个随机数(n)(假设您的随机生成器分布均匀) 如果n
- 值1有30%的几率被拾取
- 值2有12%的几率被选中
- 值3有45%的几率被选中
- 在
和0
之间生成一个随机数(1
)(假设您的随机生成器分布均匀)n
- 如果
返回值n<0.30
1
- 如果
返回值n<0.42
2
- 如果
返回值n<0.87
3
- 否则打招呼(你的数字加起来不是100%)
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;
double d=Math.random()*100;
如果((d-=30)<0)返回1;
如果((d-=12)<0)返回2;
如果((d-=45)<0)返回3;
返回4;
选择其中一个与百分比有关的值
-不理解这句话..30+12+45等于87。其他13个呢?不是else
,而是else if
,因为30+12+45<100
。使用new Random()。nextInt(87)
在结果处加1(或减少if一步)-使用45,30,12order@assylias也许你想写if n<0.30,ELSE,if n<0.42…?@nathan-我想我们可以假设,任何读到这篇文章的人都足够聪明,能够自己解决这个问题。@nathan问题被标记为java,它看起来相当直观,返回值1
将退出整个if/ELSE if块。太棒了!谢谢你,伙计。