我想制作一个锦标赛计算器/模拟器,帮助找出车手如何赢得锦标赛的不同组合
在四处挖掘之后,我想我需要使用itertools。以下是我到目前为止的情况。问题是,目前它正在为每个驾驶员生成每个位置,而我只需要它为每个组合为每个驾驶员分配一个位置
def Sim():
drivers = ["Lewis Hamilton","Valteri Bottas","Max Verstappen","Sergio Perez","Lando Norris","Daniel Riccardo","Carlos Sainz","Charles Lecerc","Pierre Gasly","Yuki Tsunoda","Kimi Raikonnen","Antonio Giovnazzi","Sebastian Vettel","Lance Stroll","Fernando Alonso","Estaban Ocon","George Russel","Nicholas Latifi","Mick Schumacher","Nikita Mazepin"]
pos = ["20", "19", "18", "17", "16", "15", "14", "13", "12", "11", "10", "9", "8", "7", "6", "5", "4", "3", "2", "1"]
c = list(itertools.product(drivers, pos))
print(c)
我不知道我是否理解正确,但我认为您可能希望为驱动程序生成排列;如果我错了,请纠正我,但例如,对于3个驱动程序A、B和C,它将是:
然后注意,在您的案例
20! ~ 2 * 10^18
中,置换的数量是n!
所有可能的排列数量都很大,但您可以通过以下方式获得:
你看到的是排列(不是产品)。但20辆车可以在2432902008176640000个位置排列中完成。每个获胜的车手有121645100408832000人
即使您使用了正确的函数(排列),您也无法在超级计算机上处理它们,更不用说将它们存储在列表中了
更容易管理的是只查看前3个的排列(对于您的19个驱动程序,只有6840个):
相关问题 更多 >
编程相关推荐