python 双色球 前6位都是1-33(不重复) 第七位是1-16 这个编程怎么写?我写的怎么执

组合问题 这个没写完 写完就执行不了 好像时间无限长

那是当然的。

6+1的话,一共127.6亿个排列。每个都至少要执行最内层的for、if、+=三行命令,就算只需要10个指令周期,就是1276亿个指令周期,假设你是3G主频,一秒也才执行30亿个指令,这也得40秒才能跑完,何况光是一个m=m+1就远远不止10个指令能完成,因为python中这是一个重新建立m对象的过程,再加上外层的循环,总的来说,是这一个没有意义的过程,因为需要的时间太长了。

如果是计算组合的话,就会少很多,组合即所有排列中,前6个数不重复的那一部分,这就少很多,33选6,然后乘以16,只有17721088个组合,这个量就少了很多。


所以,整个思路上就要改变。不使用组合计算,一定要去遍历所有组合来得到总数,也不是不行,但写法也不是这样写的。组合是前6个数不重复,那么,第一个数已经决定了第二个数的最大取值,也就是说,内层循环range的第二个参数,直接取外层循环的循环变量即可。


进一步优化就是前6层的for,range第一个参数分别是6,5,4,3,2,1,结果是一样的,大约能快10%左右吧。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-10-22
一般情况下的话,对于这种编程的话,建议大家可以直接就从后台里面直接进前台,这个书写就可以了,性价比还是非常不错的一个产品