Процент времени, когда появится это число - PullRequest
0 голосов
/ 06 июля 2018

Итак, у меня есть программа для порождения чисел в 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) (от второй до последней строки).

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

Учитывая, что есть только два варианта, которые вы можете просто сделать:

if random.random() <= 0.1:
    nlist[j] = 4
else: 
    nlist[j] = 2

Вы можете сделать что-то похожее на ваше отдельное выражение, но я бы не рекомендовал его на основе читабельности:

nlist[j] = 2 * ((random.random() <= 0.1) + 1)
0 голосов
/ 06 июля 2018

Очень простой способ:

            nlist[j] = random.choice((4, 2, 2, 2, 2, 2, 2, 2, 2, 2))
...