鱼C论坛

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

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

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

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

    xxcs = xxcs - 1

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

            
xxcs = 500
lise3 = [1,2,3,4,5,6,7,8,26,27,35,36,44,70,76,78]
#过滤列表
z = set()
while xxcs:
    lise4 = lise1()
    for x in set(lise3):
        while x in lise4[:] : lise4.remove(x)
    lise5 = lise4[8:18]
    lise5.sort()
    c = 0
    for x in z:
        if x in lise5:
            c += 1
        if c > 3:
            break
    else:
        z . update(lise5)
        lise5.sort()   
        print(lise5)
        xxcs = xxcs - 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

            
xxcs = 500
lise3 = [1,2,3,4,5,6,7,8,26,27,35,36,44,70,76,78]
#过滤列表
z = set()
while xxcs:
    lise4 = lise1()
    for x in set(lise3):
        while x in lise4[:] : lise4.remove(x)
    lise5 = lise4[8:18]
    lise5.sort()
    c = 0
    for x in z:
        if x in lise5:
            c += 1
        if c > 3:
            break
    else:
        z . update(lise5)
        lise5.sort()   
        print(lise5)
        xxcs = xxcs - 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

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

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

# 以上函数确保红球都不会重复
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

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

使用道具 举报

发表于 2022-10-25 12:42:31 | 显示全部楼层
双色球爱好者?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

都爱都爱
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-25 09:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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