我只是在地图中为“生成”对象写了一个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
这是正确的做法还是我错了?
编辑:好的,我修复了代码,现在我认为这个问题已经解决了。
答案 0 :(得分:3)
不,因为
30% + 70% + 30%
超过100%
在您的代码中“产生怪物”的可能性为40%
而不是70%
答案 1 :(得分:1)
假设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个整数值)。