新来的家伙。我是一个角色扮演游戏的极客,试图成为一个角色建设者。有四个属性(力量,敏捷,Wits和移情)。我试图将数字随机地分配给这些属性,但是您只需要得到8 (8)个总点数,所以在分配它们的编号时,您必须迭代地减去它们。这是我蹩脚的尝试。没起作用。我需要一个For循环吗?
import random
some_number = random.randint(1,8)
num_one = 8 - random.randint(1,some_number)
num_two = num_one - (random.randint(1,num_one))
num_three = num_two - (random.randint(1,num_two))
num_four = num_three - (random.randint(1,num_three))
print(num_one)
print(num_two)
print(num_three)
print(num_four)发布于 2022-06-16 23:57:18
一个更简单的方法是在这4个统计数据中随机分配8个点:
import random
stats = [0,0,0,0]
for i in range(8):
stats[random.randrange(4)] += 1
print(stats)几次跑步:
[2, 3, 0, 3]
[1, 1, 4, 2]
[0, 2, 2, 4]
[2, 2, 2, 2]
[3, 1, 1, 3]
[0, 3, 4, 1]
[1, 2, 5, 0]
[4, 2, 2, 0]
[2, 3, 2, 1]
[3, 1, 3, 1]如果你想喜欢上一门课的话:
import random
class Player:
def __init__(self, name):
self.name = name
stats = [0,0,0,0]
for i in range(8):
stats[random.randrange(4)] += 1
self.str, self.agi, self.wit, self.emp = stats
def __repr__(self):
return f'Player(name={self.name!r}, ST={self.str}, AG={self.agi}, WT={self.wit}, EM={self.emp})'
players = [Player(name) for name in ('Mark','Joe')]
print(players)几次跑步:
[Player(name='Mark', ST=2, AG=3, WT=0, EM=3), Player(name='Joe', ST=2, AG=3, WT=0, EM=3)]
[Player(name='Mark', ST=1, AG=1, WT=4, EM=2), Player(name='Joe', ST=0, AG=2, WT=2, EM=4)]
[Player(name='Mark', ST=5, AG=1, WT=0, EM=2), Player(name='Joe', ST=3, AG=2, WT=2, EM=1)]
[Player(name='Mark', ST=3, AG=2, WT=3, EM=0), Player(name='Joe', ST=3, AG=3, WT=1, EM=1)]
[Player(name='Mark', ST=4, AG=2, WT=2, EM=0), Player(name='Joe', ST=3, AG=0, WT=2, EM=3)]发布于 2022-06-16 23:57:56
有几种很好的方法来解决这个问题,但就我个人而言,我会使用一个list和一个for循环。
这段代码首先将所有的统计数据设置为0,然后循环8次,每次增加一个随机统计数据的点。在这段代码运行之后,stats[0]代表强度,stats[1]代表敏捷,等等。
import random
points = 8
stats = [0, 0, 0, 0]
for _ in range(points):
stats[random.randint(0,len(stats)-1)] += 1
print(stats)发布于 2022-06-16 23:57:37
您要做的是使用一个循环:
import random
total_points = 8
remaining = total_points
values = []
for i in range(3):
value = remaining - random.randint(1, remaining)
remaining = remaining - value
values.append(value)
values.append(remaining)这是通过声明一个名为remaining的值来实现的,我们将使用该值来保存仍然可以分配的点数。然后,对于循环的每一次迭代,我们通过从remaining中减去一个随机数来创建一个新值。然后,我们用我们计算的值重新分配remaining,这样我们就可以确保每一次连续的计算都会减少它。最后,我们将计算出来的值添加到列表中。最后,您将得到一个包含四个随机值的列表。
https://stackoverflow.com/questions/72652953
复制相似问题