Python写双色球号码生成

2021年2月24日,大家新年好。

我爹常年买彩票,今年过年期间突然想起让我写个程序来帮他选彩票。我一听挺简单的,没放心上,直到今天才想起说写一个,我先去查了一下双色球的选号规则,前六位数字在0-33之间(不包含两端),第七位在0-16之间(不包含两端)这种用个random写个随机数就行了嘛,然后就开始以下的代码编写

import random
a = random.randint(1,32)
b = random.randint(1,32)
c = random.randint(1,32)
d = random.randint(1,32)
e = random.randint(1,32)
f = random.randint(1,32)
g = random.randint(1,16)
print('输出为:'+str(a)+' ,'+str(b)+' ,'+str(c)+' ,'+str(d)+' ,'+str(e)+' ,'+str(f)+' ,'+str(g))

真的是不写Python久了,代码都写不来了,这个代码写的那叫一个麻烦,随后我写下了以下代码

import random
result = []
for i in range(0,6):
    red = random.randint(1,33)
    result.append(red)
blue = random.randint(1,16)
result.append(blue)
print(result)

后续我又想到,这样只能生成一组,何不加一个input()函数呢,来确定输入了几组数据呢,随后又有了以下代码

import random

lenth = input()

lenth = int(lenth) + 1

for e in range(1,lenth):
    result = []
    for i in range(0,6):
        red = random.randint(1,33)
        result.append(red)
    blue = random.randint(1,16)
    result.append(blue)
    print(result)

然后就直接打包成了exe给了我爹。谁知道却出现了一个很明显的漏洞,我作为一个不买彩票的,却忘了这个双色球的每个数字都不能重复。然后我试了试程序,结果如下

Python写双色球号码生成_第1张图片

很明显能看到,第五行出现了重复。所以修改了程序,如下

import random
print('随机生成双色球程序,操作规则如下,待程序运行开始,输入一个数字,')
print('该数字为双色球或大乐透随机生成的个数,随后回车确认,即可生成相')
print('应组数的号码')
print('---<双色球随机生成器>---')
len = input('双色球随机产生:')
len = int(len) + 1
for x in range(1,len):
    a = random.randint(1,32)
    b = random.randint(1,32)
    if a != b:
        c = random.randint(1,32)
        if c != b and c != a:
            d = random.randint(1,32)
            if d !=a and d != b and d != c:
                e = random.randint(1,32)
                if e != a and e != b and e != c and e != d:
                    f = random.randint(1,32)
                    if f != a and f != b and f != c and f != d and f != e:
                        g = random.randint(1,16)
                        if g != a and g != b and g != c and g != d and g != e and g != f:
                            print('输出为:'+str(a)+' ,'+str(b)+' ,'+str(c)+' ,'+str(d)+' ,'+str(e)+' ,'+str(f)+' ,'+str(g))
                        else:
                            break
                    else:
                        break
                else:
                    break
            else:
                break
        else:
            break          
    else:
        break



    
    
        
    


a = input('执行完毕,敲击回车后结束程序!')

然后发现,重复率实在是太高了。然后浓缩精简,并参考了博客园的一篇博文,有了以下代码

import random

lenth = input()

lenth = int(lenth) + 1
list = {]
for e in range(1,):
    result = []
    for i in range(0,6):
        red = random.randint(1,33)
        result.append(red)
    blue = random.randint(1,16)
    result.append(blue)
    if len(set(result))==len(result):
        list.append(result)
    else:
        print(1)

所以,最终还是有点问题,等我研究几天,再写后续。

2021年2月25日,改1版,今天换了个思路来写双色球,数字重复的问题有了改善

import random
redlist = []
bluelist = []
i = 0
b = 0

while i < 32:
    i += 1
    redlist.append(i)   //红色球的抽取列表
while b < 16:
    b += 1
    bluelist.append(b)  //蓝色球的抽取列表

print('输入数字以确认生成的双色球组数')
a = input("请输入数字,并回车确认")
a = int(a) + 1
for e in range(1,a):
    boll = []
    red = random.sample(redlist,6) //从红色球里抽取6个数字
    blue = random.choice(bluelist)
    red.append(blue)
    boll = red
    print(boll)

print('程序执行完毕,敲击回车结束运行')
n = input()

 

你可能感兴趣的:(python,python,random)