引自英雄联盟:暴击的概率根据暴击的次数动态变化。如果一次攻击没有对多次尝试进行严重打击,则未来尝试的概率将逐渐增加 - 反之亦然,其中多次成功的关键打击将导致未来尝试的概率逐渐降低。如果我理解正确,事件出现的机会逐渐受到以前时间的影响,即 随机化,对吧?在 中有这样的随机化算法吗?如果没有,我们该如何实施呢?non-uniform distributiongolangmath/rand
1 回答
紫衣仙女
TA贡献1839条经验 获得超15个赞
这似乎微不足道地实现给定或。没有看到你的代码,很难给出太多的代码。rand.Float32()rand.Float64()
您可以重复对均匀浮点数进行采样,并与不同的成功概率进行比较。这种概率在未命中时上升,在命中时下降。
例如:
func did_crit_hit(prob_success *float64) bool {
p := *prob_success
hit := rand.Float64() < p
if hit {
p = math.Max(0, p - 0.1)
} else {
p = math.Min(1, p + 0.1)
}
*prob_success = p
return hit
}
你可能想做一些更复杂的事情,而不仅仅是通过一个固定的增量来改变,但希望这能给你一个想法。
- 1 回答
- 0 关注
- 86 浏览
添加回答
举报
0/150
提交
取消