由于前五位数字需要按从小到大的顺序排列,我们可以先生成一个包含前五位数字的有序列表,然后随机生成后两位数字,再将它们插入到列表中,形成一个完整的随机7位数。

以下是实现代码:

import random

# 生成前五位数字的有序列表
digits = list(range(1, 36))

# 生成后二位数字的有序列表
tails = list(range(1, 13))

# 生成集合
nums_set = set()

# 不断生成随机数组,直到集合中包含1.5亿个数组
while len(nums_set) < 150000000:
    # 随机选择5个数字,组成前五位数字
    random.shuffle(digits)
    front = sorted(digits[:5])

    # 随机选择2个数字,组成后二位数字
    random.shuffle(tails)
    tail = sorted(tails[:2])

    # 将前五位数字和后二位数字组合成完整的7位数
    num = tuple(front + tail)

    # 将生成的数组添加到集合中
    nums_set.add(num)

# 将集合转换为列表,并按数字大小排序
nums_list = sorted(list(nums_set))

# 输出结果
print(len(nums_list))  # 应输出150000000
print(nums_list[:10])  # 输出前10个元素,示例:[(1, 2, 3, 4, 5, 6, 7), (1, 2, 3, 4, 5, 6, 8), (1, 2, 3, 4, 5, 6, 9), (1, 2, 3, 4, 5, 6, 10), (1, 2, 3, 4, 5, 6, 11), (1, 2, 3, 4, 5, 6, 12), (1, 2, 3, 4, 5, 7, 8), (1, 2, 3, 4, 5, 7, 9), (1, 2, 3, 4, 5, 7, 10), (1, 2, 3, 4, 5, 7, 11)]

这个程序会生成一个包含1.5亿个元素的列表,每个元素都是一个长度为7的元组,其中前五个元素是按从小到大排序的数字,取值范围为1到35,后两个元素也是按从小到大排序的数字,取值范围为1到12。由于每个元素都是唯一的,因此整个列表也是唯一的

计算出唯一的随机7位数数组前五位数字每个数字的区间为1到35后二位数字每个数字的区间为1到12。前五位每个数字按从小到大顺序排列互不相同;后2位数字按从小到大排列互不相同;持续执行直到获得一个包含15亿个数组的集合对这个集合进行对比对比后得出完全不重复的7位数数组7位数数组示例:08091425290406

原文地址: https://www.cveoy.top/t/topic/eCM5 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录