重新生成随机选择python

时间:2013-08-02 00:23:45

标签: python random

我只是想知道我是否可以让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,则获胜因为它有4个2。

所以,  玩家1只能向玩家0号码2 1或0询问。

我怎么能以玩家1选择2号而不是1号或0号的方式进行编码,因为有更大的机会赢得它选择2号?有什么想法吗?

3 个答案:

答案 0 :(得分: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]

答案 1 :(得分: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)]

答案 2 :(得分: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来查找计数最高的元组,然后使用切片结果给出数字。