Python生成随机大乐透(唯一性)

方法一(循环判断,步骤略长)

import random
"""
使用python模拟大乐透号码生成器。选号规则为:
前区在1-35的范围内随机产生不重复的5个号码,
后区在1-12的范围内随机产生不重复的2个号码。
"""


def card():
    m = 0                                        # 大乐透总位数索引
    front = []                                   # 前区列表
    back = []                                    # 后区列表
    while m < 7:
        if m < 5:                                # 确保前区五个数字唯一不重复
            card_number = random.randint(1, 35)
            if card_number not in front:
                front.append(card_number)
                m += 1
        else:
            card_number = random.randint(1, 12)   # 确保后区两个数字唯一不重复
            if card_number not in back:
                back.append(card_number)
                m += 1
    front.sort()                                  # 将两个列表进行升序排序
    back.sort()
    for j in front:
        print('%02d' % j, end=' ')                # 依次输出每个值,且个位数前面自动补0
    print(end='     ')                            # 前区与后区之间有一定间隔
    for k in back:
        print('%02d' % k, end=' ')
    print('')


number = input('请输入要生成的大乐透号码注数:')
for i in range(int(number)):
    card()

方法二(随机选取,简洁)

import random
"""
使用python模拟大乐透号码生成器。选号规则为:
前区在1-35的范围内随机产生不重复的5个号码,
后区在1-12的范围内随机产生不重复的2个号码。
"""


def card():
    front_list = list(range(1, 36))               # 前区数字列表
    front = random.sample(front_list, 5)          # 随机取5个数字
    back_list = list(range(1, 13))                # 后区数字列表
    back = random.sample(back_list, 2)            # 随机取两个数字
    front.sort()                                  # 将两个列表进行升序排序
    back.sort()
    for j in front:
        print('%02d' % j, end=' ')                # 依次输出每个值,且个位数前面自动补0
    print(end='     ')                            # 前区与后区之间有一定间隔
    for k in back:
        print('%02d' % k, end=' ')
    print('')


number = input('请输入要生成的大乐透号码注数:')
for i in range(int(number)):
    card()

运行结果

结果截图

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值