所以我有一个程序可以在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)
(倒数第二行)。
答案 0 :(得分:2)
鉴于您只能简单地选择两个选项:
if random.random() <= 0.1:
nlist[j] = 4
else:
nlist[j] = 2
您可以执行与单个表达式类似的操作,但基于可读性我不建议这样做:
nlist[j] = 2 * ((random.random() <= 0.1) + 1)
答案 1 :(得分:1)
最简单的方法是:
nlist[j] = random.choice((4, 2, 2, 2, 2, 2, 2, 2, 2, 2))