如何生成随机数,但数字应避免已使用的数字。 我有一个包含数千组数字的TXT文件,我需要生成一系列随机数,同时避免这些。
IE,TXT - 0102030405
我的随机数需要避免这个数字。
在旁注中,我如何将TXT 10位数字分成5位,两位数字? 那么我怎样才能根据它生成随机数。
答案 0 :(得分:1)
您可以将之前找到的所有随机数加载到字典中,然后检查字典中是否有new_random,以及是否尝试使用新的随机数。
对于第二方,请说您的十位数字存储在变量ten_digits中。
ten_digits = '1234567890'
您可以通过
将其分为5个两位数字[x + y for x, y in zip(ten_digits[::2], ten_digits[1::2]
>>> ['12', '34', '56', '78', '90']
答案 1 :(得分:1)
如果你需要维护文件(我认为你这样做,为了添加新的数字),我建议你“忘记”使用纯文本文件并使用SQLite或任何其他备份的嵌入式数据库在文件中,因为您可能不想在内存中加载所有数字。
您希望从SQLite获得的“功能”(或更好的数据结构)是B树,因此您可以快速检索数字。我这样说,因为你也可以尝试找到一个实现B-Tree的库,然后你就不需要SQLite了。
答案 2 :(得分:0)
您是否将这些数字用作ID?您应该考虑使用哈希表。
http://en.wikipedia.org/wiki/Hash_table
我对Python并不十分熟悉,但我确信有一个子字符串函数可以给它(作为参数)一个索引来启动子字符串和要复制的字符数。
答案 3 :(得分:0)
如果您的列表相对较小,可以将其加载到set并检查:
random_number not in number_set
要分割您可以使用切片的数字:
s='0102030405'
n=2
result = [s[i:i+n] for i in range(0, len(s), n)]