如何生成随机数,同时避免重复使用的数字
我想知道怎么生成随机数字,但要避免已经用过的数字。我有一个TXT文件,里面有成千上万组数字,我需要生成一系列随机数字,同时避开这些数字。
比如,TXT文件里有个数字是0102030405
那么我生成的随机数字就要避开这个数字。
另外,我想知道怎么把这个10位的TXT数字分成5个两位的数字?然后我又该怎么根据这些数字生成随机数字呢?
4 个回答
0
你是在用数字当作ID吗?那你可能需要考虑使用哈希表。
http://en.wikipedia.org/wiki/Hash_table
我对Python不是特别熟悉,但我相信它有一个子字符串的功能,你可以给它传入一个开始的位置和要复制的字符数量。
1
如果你需要维护这个文件(我觉得你是需要的,因为你想添加新的数字),我建议你“忘掉”使用普通的文本文件,改用SQLite或者其他任何嵌入式数据库,这些数据库会保存在一个文件里,因为你可能不想把所有的数字都加载到内存中。
你想从SQLite得到的“功能”(或者说数据结构)是B树,这样你就能快速找到数字。我这么说是因为你也可以尝试找一个实现B树的库,那样你就不需要SQLite了。
1
你可以把之前找到的所有随机数字放到一个字典里,然后只需要检查一下新的随机数字是否在这个字典里。如果在,就再试一个新的随机数字。
对于第二部分,假设你的十位数字存储在变量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']