如何生成随机数,同时避免重复使用的数字

1 投票
4 回答
628 浏览
提问于 2025-04-16 23:25

我想知道怎么生成随机数字,但要避免已经用过的数字。我有一个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']

撰写回答