我只是想知道我是否可以让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号?有什么想法吗?
答案 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
来查找计数最高的元组,然后使用切片结果给出数字。