【问题标题】:Percent of time that number will spawn该数字产生的时间百分比
【发布时间】:2018-07-06 00:01:01
【问题描述】:

所以我有一个程序可以在 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)(倒数第二行)。

【问题讨论】:

    标签: python random probability


    【解决方案1】:

    鉴于只有两个选项,您可以简单地做:

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

    你可以做一些类似于你的单一表达的事情,但基于可读性我不推荐它:

    nlist[j] = 2 * ((random.random() <= 0.1) + 1)
    

    【讨论】:

      【解决方案2】:

      最简单的方法是:

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

      【讨论】:

      • 谢谢,我太笨了,没想到这一点。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-09
      • 2011-12-14
      • 1970-01-01
      • 1970-01-01
      • 2016-12-10
      • 2015-01-16
      相关资源
      最近更新 更多