【问题标题】:Python Random Number Generator for Tic-Tac-Toe井字游戏的 Python 随机数生成器
【发布时间】:2015-06-19 09:40:29
【问题描述】:

所以我是 StackOverFlow 的新手,我有一个关于我用 Python 制作的井字游戏的简短问题。我已经完成了大部分游戏,但我对电脑玩家的动作感到困惑。我了解如何使其成为随机生成的数字。我目前有,

'board = [" ", " ", " ", " ", " ", " ", " ", " ", " "]

compTurn = random.randrange(0,9)
board[compTurn] = "O"
printboard(board)`

我需要确保随机生成的数字不会是板上已经占用的空间。

假设我在游戏中先走,然后选择左上角的去核器或棋盘[0] 来放置我的“X”。我将如何确保计算机 random.range 不会占用已包含数字的位置。

非常感谢!

【问题讨论】:

    标签: python function python-3.x functional-programming


    【解决方案1】:

    尝试:

    random.choice([i for i, e in enumerate(board) if e == " "])
    

    这从板上所有空的索引中选择

    【讨论】:

      【解决方案2】:

      对于这么小的东西,只需跟踪您使用过的数字:

      used = []
      r = random.randrange(0,9)
      while r in used:
        r = random.randrange(0,9)
      used.append(r)
      

      这是最简单的方法,它也适用于大数字,因为从概率上来说,重新旋转一个数字是恒定的。

      【讨论】:

      • 这在需要多次旋转方面是不是有点低效?它可能运行时间过长,随着“使用”索引的数量增加...
      • @SamuelLittley 这就是为什么如果您打算使用所有结果,我不会推荐它。话虽如此,对于 n = 10,这不是问题。此外,如果您正在消耗全部选择的一小部分,您可能会拥有无限的运行时间,但很可能您最多只能进行线性重试。平均而言,您会不断重试。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-19
      • 2019-07-17
      • 2014-04-12
      • 1970-01-01
      相关资源
      最近更新 更多