该数字产生的时间百分比

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)