百分比大小写语句

Percent case statements

本文关键字:语句 大小写 百分比      更新时间:2023-10-16

我只是在写一个if语句来"刷出"地图中的对象,我正在玩百分比,但我不确定我是否做得对。这是我的文件:

int chance = rng_.nextInt(0, 100);
if(chance <= 20) // 20%
{
    // Spawn a chest
}
else if((chance > 20) && (chance <= 50)) // 30%
{
    // Spawn a monster
}
// Otherwise don't spawn nothing

这是正确的方法还是我错了?

编辑:好的,我已经修复了代码,现在我认为问题解决了。

不行,因为

30% + 70% + 30%大于100%

在你的代码中,"生成怪物"的机会40%而不是70%

假设rng_。nextInt生成一个介于0到100之间的数字,它是一个线性分布(0到99之间的任何数字与其他数字的可能性一样),那么0-19将是一个箱子(20%的可能性),20-49将是一个怪物(30%的可能性),而50到99之间的任何数字(50%的可能性)都不会生成任何东西。所以代码看起来像:

int chance = rng_.nextInt(0,100);
if ( chance < 20 ) 
{
  // spawn a chest
}
else if ( chance < 50 ) 
{
   // spawn a monster
}
else
{
  // Do other items if required.  
}

所以20+30+50 = 100,等于0-99(100个整数值)在你的随机数生成