-1

我只是想知道我是否可以让 python 重新生成它所做的随机选择?

computer player = player 1
user player= player 0

player 0 has [2,3,4,5,6,8,8]
player 1 has [2,1,1,2,2,0,0]

玩家 1 必须生成随机选项以从玩家 0 中选择它想要的数字。该数字只能是它已经在列表中的数字。

如果说玩家 1 选择 2,它会获胜,因为它有四个 2。

因此,玩家 1 只能向玩家 0 询问 2 1 或 0。

我如何以玩家 1 选择数字 2 而不是 1 或 0 的方式编码,因为它选择 2 的获胜机会更大?任何想法?

4

3 回答 3

1

理解这个问题有点棘手,但我认为它的意思是你想重播一个“随机”的数字序列。我完全从问题的第一行得到了这个,因为我不理解你写的游戏。

您可以使用random.seed(). 例如:

设置种子并计算随机整数列表:

>>> import random
>>> random.seed(0)
>>> [random.randint(1,100) for i in range(10)]
[85, 76, 43, 26, 52, 41, 79, 31, 48, 59]

如果您不重置种子,则再次执行此操作会产生:

>>> [random.randint(1,100) for i in range(10)]
[91, 51, 29, 76, 62, 26, 91, 99, 82, 91]

重置种子,您将获得与第一次相同的随机数:

>>> random.seed(0)
>>> [random.randint(1,100) for i in range(10)]
[85, 76, 43, 26, 52, 41, 79, 31, 48, 59]
于 2013-08-02T00:35:03.063 回答
0

如果我正确理解了您的问题,情况就是这样:

player_1 = gen_random(7)
>>> player_2 = gen_random(7)
>>> player_1
[2, 3, 0, 9, 8, 9, 5]
>>> player_2
[0, 6, 0, 6, 5, 3, 6]
>>> player_choose(player_1)
9
>>> player_choose(player_2)
6

每个玩家从 0 到 9 中选择 7 个随机数字。然后每个玩家从自己选择​​的 7 个数字中进行选择。

这是代码:

import random
def gen_random(number):
    rList = []
    for i in range(number):
        rList.append(random.randint(0,9))
    return rList

def player_choose(rList):
    maxIndex = len(rList)-1
    return rList[random.randint(0,maxIndex)]
于 2013-08-02T00:40:34.710 回答
0

这是问题中唯一明确的部分,所以我将回答:

我如何以玩家 1 选择数字 2 而不是 1 或 0 的方式编码,因为它选择 2 的获胜机会更大?任何想法?

>>> p1 = [2, 1, 1, 2, 2, 0, 0]
>>> max({n: p1.count(n) for n in set(p1)}.items(), key=lambda x: x[1])[0]
2

上面的一个衬里将返回最多的任何数字,在这种情况下为 2。

它的工作原理如下:

>>> {n: p1.count(n) for n in set(p1)}
{0: 2, 1: 2, 2: 3}   #creates a dictionary where key: value is number: count
>>> {n: p1.count(n) for n in set(p1)}.items()
[(0, 2), (1, 2), (2, 3)]  #shows the items as tuples of (number, count)

其余的只是max用来查找计数最高的元组,然后对结果进行切片以给出数字。

于 2013-08-02T01:09:15.350 回答