如何生成百分比范围内的数字?

时间:2014-04-01 13:25:40

标签: ruby

我正在制作一个文字冒险游戏,并且必须随机化我的英雄的敌人的统计数据。

有没有办法在百分比范围内生成随机整数? 像这样:BaseHealth±10%,其中BaseHealth是一个变量。

4 个答案:

答案 0 :(得分:2)

def randomize_value(value, percent)
  bottom = (value * (1 - percent / 100.0)).to_i
  up = (value * (1 + percent / 100.0)).to_i
  (bottom..up).to_a.sample
end

health = randomize_value(BaseHealth, 10)

这假设健康状况是整数。

答案 1 :(得分:2)

如果BaseHealth是整数,

def take_random base, percent
  d = (base * percent / 100.0).to_i
  base - d + rand(d * 2)
end

take_random(BaseHealth, 10)

或遵循Stefan的建议,

def take_random base, percent
  d = (base * percent / 100.0).to_i
  rand(base - d..base + d)
end

take_random(BaseHealth, 10)

答案 2 :(得分:0)

我明白你的意思

你可以这样做:

BaseHealth = ( rand(BaseHealth * 0.2) + BaseHealth*0.9 ).to_i

答案 3 :(得分:0)

这可以通过一些基本算法来完成:

TotalHealth = BaseHealth + (BaseHealth * (rand(21)-10)/100)

这将采用BaseHealth并将其乘以随机数0..20减去10,转换为百分比。

假设BaseHealth = 20:

  • 如果rand返回17,则会7/100 = .07 TotalHealth = 21.41
  • 如果rand返回7,则会-7/100 = -.07 TotalHealth = 18.6