我正在制作一个文字冒险游戏,并且必须随机化我的英雄的敌人的统计数据。
有没有办法在百分比范围内生成随机整数? 像这样:BaseHealth±10%,其中BaseHealth是一个变量。
答案 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