python - 以随机顺序执行任务

标签 python random

我有以下函数用于为角色统计数据分配点:

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/

相关文章:

java - 如何生成每个数字都在数字范围内的随机数?

php - 如何生成一个随机但唯一的数字并在我的图像标签源中显示该数字

python - 一种使用脚本对数字进行分组的方法

python - 如何转换所有 100,000 列循环时间数据 (HH :MM:SS) to seconds?

javascript - 这个指数分布采样器在密码学上是安全的吗?

SQLite - 在范围内选择随机日期时间

python - 服务器如何启动与客户端的连接

python - 使用 Python pypyodbc 到 SQL Server 的连接字符串

python - 如何从双端队列中弹出()很多元素?

java - 在 Java 中生成随机唯一序列