我正在制作一个基于文本的RPG。我有一个算法,它可以根据两个变量的值来确定玩家对敌人造成的伤害。我还不确定算法的第一部分将如何工作,但这并不重要。在
(AttackStrength
是玩家的一个属性,通常表示他的攻击有多强。WeaponStrength
是玩家所持剑的一个属性,通常表示该武器的攻击强度
以下是算法的运行方式:
import random
Damage = AttackStrength (Do some math operation to WeaponStrength) WeaponStrength
DamageDealt = randrange(DamageDealt - 4, DamageDealt + 1) #Bad pseudocode, sorry
我想对最后一行做的是在一个整数范围内得到一个随机整数,最小界值比损伤小4,最大界值比损伤多1。但是,还不止这些。我想分配的概率是:
我希望我没有把这一切复杂化谢谢你!在
我认为当你有很好的整数概率时,做随机加权概率的最简单的方法就是简单地用你选择的多个副本填充一个列表-以正确的比率-然后从中随机选择一个元素。在
让我们从-3到1,你的(原始)权重为10,10,25,25,30%。它们的gcd为5,因此您只需要一个长度为20的列表来保存您的选择:
实现完成后,从中随机选择。演示显示100次试验:
^{pr2}$基本上,你要完成的是模拟一个加载的模具:你有六种可能性,并希望为每一种可能性分配不同的概率。从数学上讲,这是一个相当有趣的问题,here是关于这个主题的一篇精彩文章。在
不过,您可能正在寻找一些不太冗长的东西,在这里实现的最简单的模式是通过轮盘赌选择。给定一个字典,其中键是各种“边”(在本例中是可能的损伤公式),值是每边发生的概率(
.3, .25
),方法如下所示:假设我们希望对结果有这些相对权重:
然后我们创建一个部分和列表
^{pr2}$b
和一个函数c
:函数}的整数,概率与
c
将返回一个从0
到{a
中指定的权重成比例。在相关问题 更多 >
编程相关推荐