我如何生成随机数字,但有数字避免已使用的数字。 我有一个TXT文件,数千组数字,我需要生成一系列随机数,同时避免这些。如何生成随机数字,同时避免已使用的数字
IE,TXT - 0102030405
我的随机数字需要避免这个数字。
请注意,如何将TXT 10位数字分成5个两位数字? 那么我怎么能生成基于此的随机数字。
我如何生成随机数字,但有数字避免已使用的数字。 我有一个TXT文件,数千组数字,我需要生成一系列随机数,同时避免这些。如何生成随机数字,同时避免已使用的数字
IE,TXT - 0102030405
我的随机数字需要避免这个数字。
请注意,如何将TXT 10位数字分成5个两位数字? 那么我怎么能生成基于此的随机数字。
您可以将以前找到的所有随机数加载到字典中,然后只检查字典中的new_random,以及是否尝试新的随机数。
对于第二方来说,你的十位数字存储在变量ten_digits中。
ten_digits = '1234567890'
,你可以通过你使用数字作为标识做
[x + y for x, y in zip(ten_digits[::2], ten_digits[1::2]
>>> ['12', '34', '56', '78', '90']
打破这一成5个两位数字?你应该看看使用哈希表。
http://en.wikipedia.org/wiki/Hash_table
我并不十分熟悉Python,但我敢肯定有一个子功能,您可以把它(作为参数)启动子和要复制的字符数的指标。
如果您需要维护该文件(我认为您要这么做,为了添加新的数字),我建议您使用纯文本文件“忘记”并使用SQLite或任何其他支持的嵌入式数据库在一个文件中,因为你可能不想加载内存中的所有数字。
您希望从SQLite获得的“功能”(或更好的说,数据结构)是一个B-Tree,因此您可以快速检索数字。我这样说,因为你也可以尝试找到一个实现B-树的库,然后你就不需要SQLite。
如果您的列表比较小,你可以将其加载到set并核对:
random_number not in number_set
要拆分的数量,您可以使用切片:
s='0102030405'
n=2
result = [s[i:i+n] for i in range(0, len(s), n)]
你是什么意思根据5位数字生成一个随机数?你的意思是避免这些5位数字? – arunkumar
在旁注中,txt文档中的所有数字均为CSV。 他们看起来像这样:“0102030405”1 “0202030405”4 – mike
是的,TXT号码作为一个整体,需要避免。 – mike