鱼C论坛

 找回密码
 立即注册
查看: 3855|回复: 5

[已解决]一个双色球的小程序。。求完善

[复制链接]
发表于 2022-10-24 12:09:35 | 显示全部楼层 |阅读模式
20鱼币
  1. import random
  2. def lise1():
  3.     '函数功能,生成随机数字列表,通过修改len,以及切片方式,获取随机列表的长度'
  4.     lise2 = []
  5.     while True:
  6.         i = random.randint(1,33)
  7.         if i not in lise2:
  8.             lise2.append(i)
  9.             if len(lise2) == 25:
  10.                 return lise2[5:]
  11.                 break

  12.             
  13. xxcs = 500
  14. lise3 = [2,3,4,10,15,20,25,27,30]
  15. #不要的双色球号码列表
  16. while xxcs:
  17.     lise4 = lise1()
  18.     for x in set(lise3):
  19.         while x in lise4[:] : lise4.remove(x)
  20.     lise5 = lise4[3:9]
  21.     lise5.sort()
  22.     print(lise5)

  23.     xxcs = xxcs - 1
复制代码


#还要在加一个功能,随机的500注里,不能有(可设置2,3,4)个以上号码一样。。。。我该如何改进代码呢???
最佳答案
2022-10-24 12:09:36
  1. import random
  2. def lise1():
  3.     '函数功能,生成随机数字列表,通过修改len,以及切片方式,获取随机列表的长度'
  4.     lise2 = []
  5.     while True:
  6.         i = random.randint(1,10000)
  7.         if i not in lise2:
  8.             lise2.append(i)
  9.             if len(lise2) == 68:
  10.                 return lise2[18:48]
  11.                 break

  12.             
  13. xxcs = 500
  14. lise3 = [1,2,3,4,5,6,7,8,26,27,35,36,44,70,76,78]
  15. #过滤列表
  16. z = set()
  17. while xxcs:
  18.     lise4 = lise1()
  19.     for x in set(lise3):
  20.         while x in lise4[:] : lise4.remove(x)
  21.     lise5 = lise4[8:18]
  22.     lise5.sort()
  23.     c = 0
  24.     for x in z:
  25.         if x in lise5:
  26.             c += 1
  27.         if c > 3:
  28.             break
  29.     else:
  30.         z . update(lise5)
  31.         lise5.sort()   
  32.         print(lise5)
  33.         xxcs = xxcs - 1
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-10-24 12:09:36 | 显示全部楼层    本楼为最佳答案   
  1. import random
  2. def lise1():
  3.     '函数功能,生成随机数字列表,通过修改len,以及切片方式,获取随机列表的长度'
  4.     lise2 = []
  5.     while True:
  6.         i = random.randint(1,10000)
  7.         if i not in lise2:
  8.             lise2.append(i)
  9.             if len(lise2) == 68:
  10.                 return lise2[18:48]
  11.                 break

  12.             
  13. xxcs = 500
  14. lise3 = [1,2,3,4,5,6,7,8,26,27,35,36,44,70,76,78]
  15. #过滤列表
  16. z = set()
  17. while xxcs:
  18.     lise4 = lise1()
  19.     for x in set(lise3):
  20.         while x in lise4[:] : lise4.remove(x)
  21.     lise5 = lise4[8:18]
  22.     lise5.sort()
  23.     c = 0
  24.     for x in z:
  25.         if x in lise5:
  26.             c += 1
  27.         if c > 3:
  28.             break
  29.     else:
  30.         z . update(lise5)
  31.         lise5.sort()   
  32.         print(lise5)
  33.         xxcs = xxcs - 1
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-10-24 13:36:09 | 显示全部楼层
  1. import random

  2. def gets(arr = None, balls = 6):
  3.     while True:
  4.         Red = random.sample(range(1, 34), k = balls - 1)
  5.         Blue = random.choice(range(1, 17))
  6.         if arr:
  7.             if not (set(Red) & set(arr)) and Blue not in arr:
  8.                 break
  9.         else:
  10.             break
  11.     return sorted(Red) + [Blue]

  12. print(gets()) # 随机 7 颗球,默认 6 颗红球(1~33号)和 1 颗篮球(1~16号)
  13. print(gets([2, 5, 9, 13])) # 随机 7 颗球,但不要号码 2、5、9、13
  14. print(gets(balls = 10)) # 随机 10 颗球

  15. # 以上函数确保红球都不会重复
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-10-24 20:27:47 | 显示全部楼层

还差那么点点,篮球部分可以删除。。只选红球。。每次随机出来的注数少了点。。比如输入随机数20个球。。。在过滤掉不要的球。。剩下的球在不报错的情况下,得出相同号不超过3个得组合越多越好。。。。
又或者这样已知机选出20个号,已过滤不要的号。。剩下的号,用递归的方式吧他们3个不相同的号全部打印出来???可懂??相当于给你一个长度是10-20不等的数字列表。。然后用递归吧这个列表分成若干个长度只有6-8的列表,。。。以打印(生成)的列表与列表之间相同元素不能超过2-5之间
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-10-25 12:42:31 | 显示全部楼层
双色球爱好者?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-10-25 12:54:00 | 显示全部楼层

都爱都爱
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-23 04:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表