python itertools卡死_python-优化排列搜索循环(不能使用itertools),速度非常慢.有什么建议么?...

本文探讨了一个游戏策略问题,作者试图找出在有限选择中获得特定组合的概率。由于使用`itertools`导致运行速度缓慢,作者分享了一个替代的循环方法,通过动态编程和递归降低计算复杂性,提高了效率。文中提供了改进后的代码,实现了显著的性能提升。
摘要由CSDN通过智能技术生成

这是一个游戏,您有12张牌,然后选择您,直到从同一组中选择3张.我试图找到选择每个小组的可能性.我创建的脚本可以运行,但是速度非常慢.我的同事在R中创建了类似的脚本,但没有这些函数,而他的脚本所花费的时间是我的脚本的1/100.我只是想找出原因.任何想法将不胜感激.

from collections import Counter

import pandas as pd

from datetime import datetime

weight = pd.read_excel('V01Weights.xlsx')

重量如下所示:

Symb Weight

Grand 170000

Grand 170000

Grand 105

Major 170000

Major 170000

Major 215

Minor 150000

Minor 150000

Minor 12000

Bonus 105000

Bonus 105000

Bonus 105000

“最大选择数”代表不同“卡”的总数.总选择数代表用户选择的最大数量.这是因为经过8个选择,您将确保每种类型都有2个,因此在第9个选择中,您将保证具有3个匹配项.

TotalPicks = 9

MaxPicks = 12

该名称应为PickedProbabilities.

Picks = {0:0,1:0,2:0,3:0}

这是timeit类的简单版本,因为我不喜欢timeit类

def Time_It(function):

start =datetime.now()

x = function()

finish = datetime.now()

TotalTime = finish - start

Minutes = int(TotalTime.seconds/60)

Seconds = TotalTime.seconds % 60

print('It took ' + str(Minutes) + ' minutes and ' + str(Seconds) + ' seconds')

return(x)

给定x(按我的选择顺序),我找到了概率.这些选择已完成,无需更换

def Get_Prob(x,weight):

prob = 1

weights = weight.iloc[:,1]

for index in x:

num = weights[index]

denom = sum(weights)

prob

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值