Python打印随机行而不重复

Avi*_*ith 1 python random python-3.x

我有一个小的 python 程序,它打印随机的十六进制字符串,每次运行该程序时它都会生成一个十六进制字符串。我希望程序只生成一个十六进制字符串,这意味着程序不应该生成已经生成的字符串。

例子

python3 program.py

1. ab6b

2. 4c56

3. 1b13

4. ae8d

Run Code Online (Sandbox Code Playgroud)

下一个示例显示输出是随机的并且程序重复行。

1b13

ae8d

4c56

ae8d

Run Code Online (Sandbox Code Playgroud)

我的代码

import os
import binascii

print(binascii.hexlify(os.urandom(2)).decode('utf-8'))
Run Code Online (Sandbox Code Playgroud)

Sax*_*owl 5

我们可以存储所有以前生成的字符串,并根据此列表检查任何新字符串,但在大量运行后,您可能会用完唯一的字符串。

import os
import binascii

generated_hexes = set()

while True:
    new_hex = binascii.hexlify(os.urandom(2)).decode('utf-8')
    if new_hex not in generated_hexes:
        print(new_hex)
        generated_hexes.add(new_hex)
Run Code Online (Sandbox Code Playgroud)