我有以下函数用于为角色统计数据分配点:
def randstat(level):
from random import randint
points = randint(10,max(20,5*level))
agility=randint(0,points)
points -= agility
stamina=randint(0,points)
points -=stamina
strength=randint(0,points)
points -=strength
vitality=randint(0,points)
points -=vitality
inteligence=randint(0,points)
points -= inteligence
它的工作原理正如我所期望的,但是当你查看统计列表时,可以分配的点越来越少,因此像智力
或活力
这样的统计数据会少得多比敏捷性
或耐力
得分。我如何以随机顺序为每个统计数据分配点,即,它并不总是先分配敏捷性
,然后分配智力
最后?
最佳答案
我会以相反的方式来解决这个问题 - 不是尝试用随机数填充每个统计数据,而是选择要随机增加的统计数据并重复。
这将导致更加“均匀”的统计数据,并使角色的一项统计数据达到最高点而其余的统计数据为零的情况大大减少。
def randstat(level):
points = randint(10,max(20,5*level))
# set all our minimums to zero
stats = [0, 0, 0, 0, 0]
for i in range(points):
stat = randint(0, len(stats)-1); # pick a random stat to increment
stats[stat] = stats[stat] + 1
# extract the stats back out of our array
agility = stats[0]
stamina = stats[1]
strength = stats[2]
vitality = stats[3]
intelligence = stats[4]
关于python - 以随机顺序执行任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22471329/