【问题标题】:I want to roll 3 dice with independent numbers from each other我想掷 3 个彼此独立的骰子
【发布时间】:2010-12-28 00:02:09
【问题描述】:

我想编写一个 python 程序来模拟同时掷出 3 个骰子,但我希望 3 个骰子每次掷出时总是有不同的数字。 ex 在第一卷我得到 2,1,6 这很好,但我不想要编。为前 2,4,2 滚动重复。 (3,3,3,也是不能接受的)

# generating random numbers 1 - 6
die1 = random.randint(1, 6) 

die2 = random.randrange(1, 6)

die3 = random.randrange(1, 6)

这就是我目前所拥有的,我是初学者......谢谢

【问题讨论】:

  • 如果您也对算法本身感兴趣,而不仅仅是解决方案stackoverflow.com/questions/311703/…,请查看这个问题
  • 注意:在这种情况下,独立通常被理解为一个骰子的结果不会影响其他骰子的结果。这几乎与您想要的完全相反。我认为您正在寻找的词是 distinct

标签: python random


【解决方案1】:

试试random.sample:

>>> sides = 6
>>> dice = random.sample(range(1, sides + 1), 3)
[3, 6, 1]

我建议您重新考虑使用名为 die1die2die3 的变量是否是个好主意。

通常最好使用上面示例中的列表。

【讨论】:

    【解决方案2】:

    这将起作用:

    a = range(1,7)
    random.shuffle(a)
    a[:3]
    

    【讨论】:

    • 不错的方法。比掷三个独立的骰子然后重新掷重复的骰子要好得多。
    【解决方案3】:

    一个简单的方法是

    import random
    die1, die2, die3 = random.sample([1,2,3,4,5,6], 3)
    

    Random Documentation

    【讨论】:

      【解决方案4】:

      这不是三个骰子的常见行为,但你可以这样做:

      import random
      [die1, die2, die3] = random.sample(xrange(1, 7), 3)
      

      这是random.sample()xrange() 的文档供您参考。

      【讨论】:

        【解决方案5】:

        如果您要滚动多次,最好将 range(1,7) 存储在某处并使用示例函数而不是随机播放函数(显然是因为“随机播放”会随机播放所有范围)

        看看这个:

        import random,time
        N=80000
        a = range(1,7)
        t= time.clock()
        for i in xrange(N):
            random.shuffle(a)
            a[:3]
        t= time.clock()-t
        print t
        
        t= time.clock()
        for i in xrange(N):
            dice = random.sample(range(1, 6 + 1), 3)
        t= time.clock()-t
        print t
        
        t= time.clock()
        for i in xrange(N):
            dice = random.sample(a, 3)
        t= time.clock()-t
        print t
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-10-30
          • 2018-10-19
          • 2018-09-08
          • 1970-01-01
          • 2013-12-14
          • 2012-02-29
          • 2015-06-26
          • 1970-01-01
          相关资源
          最近更新 更多