我想提出一个不同的解决方案:
from random import shuffle
from itertools import cycle
from pprint import pprint
country_code = list(range(11, 24))
operator_code = list(range(67, 99))
exchange_code = list(range(100, 999))
terminal_code = list(range(1234, 9999))
target_len = 100000
ls = set()
while len(ls)
shuffle(exchange_code)
shuffle(terminal_code)
numbers = zip(cycle(country_code), cycle(operator_code), cycle(exchange_code), terminal_code)
for c, o, e, t in numbers:
ls.add(f"{c} {o}{e}-{t}")
pprint(ls)
print(len(ls))
# To randomize final output
ls = [i for i in ls]
shuffle(ls)
这里的输出是有序的,因为集合是有序的,但它使用随机播放和循环来稍微改进随机化,并确保您不会在集合的约束下重复数字。大多数时候,我将它作为一种以不同方式思考随机化的方式——虽然选择带有替换的随机数 (randint) 是一种方法,但 shuffle() 和 choice() 都是确保随机性的好方法,你可以用 zip 做一些事情() 和 cycle() 创建您选择的随机流。
这个问题的真正解决方案是创建一个生成器函数——我必须更加努力地思考如何去做,但这也是一个可能的解决方案。
© 版权声明
本站下载的源码均来自公开网络收集转发二次开发而来,
若侵犯了您的合法权益,请来信通知我们1413333033@qq.com,
我们会及时删除,给您带来的不便,我们深表歉意。
下载用户仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,访问及下载者下载默认同意本站声明的免责申明,请合理使用切勿商用。
THE END
暂无评论内容