该数字产生的时间百分比
Percent of time that number will spawn
所以我有一个程序可以在 2048 年生成数字。现在生成 2 或 4 的机会是 50/50。
nlist = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
def spawnnum():
x = []
for i in range(0, 16):
if nlist[i] == 0:
x.append(nlist[i])
y = random.randint(1, len(x))
count = 0
for j in range(len(nlist)):
if nlist[j] == 0:
count += 1
if count == y:
nlist[j] = 2 * random.randint(1, 2)
break
有没有一种方法可以使程序生成 4 的几率为 10%,生成 2 的几率为 90%。顺便说一句,这个程序实际生成数字的地方是nlist[j] = 2 * random.randint(1, 2)
(倒数第二行)。
最简单的方法是:
nlist[j] = random.choice((4, 2, 2, 2, 2, 2, 2, 2, 2, 2))
鉴于只有两个选项,您可以简单地执行:
if random.random() <= 0.1:
nlist[j] = 4
else:
nlist[j] = 2
你可以做一些类似于你的单一表达式的事情,但基于可读性我不会推荐它:
nlist[j] = 2 * ((random.random() <= 0.1) + 1)
所以我有一个程序可以在 2048 年生成数字。现在生成 2 或 4 的机会是 50/50。
nlist = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
def spawnnum():
x = []
for i in range(0, 16):
if nlist[i] == 0:
x.append(nlist[i])
y = random.randint(1, len(x))
count = 0
for j in range(len(nlist)):
if nlist[j] == 0:
count += 1
if count == y:
nlist[j] = 2 * random.randint(1, 2)
break
有没有一种方法可以使程序生成 4 的几率为 10%,生成 2 的几率为 90%。顺便说一句,这个程序实际生成数字的地方是nlist[j] = 2 * random.randint(1, 2)
(倒数第二行)。
最简单的方法是:
nlist[j] = random.choice((4, 2, 2, 2, 2, 2, 2, 2, 2, 2))
鉴于只有两个选项,您可以简单地执行:
if random.random() <= 0.1:
nlist[j] = 4
else:
nlist[j] = 2
你可以做一些类似于你的单一表达式的事情,但基于可读性我不会推荐它:
nlist[j] = 2 * ((random.random() <= 0.1) + 1)