You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Python程序生成不重复的随机HEX字符串?

如何让Python程序生成唯一的随机HEX字符串?

要实现每次运行程序都生成不重复的随机HEX字符串,核心是需要持久化记录已生成的字符串,每次生成前做重复检查。以下是可行的解决方案:

实现代码

import os
import binascii

# 用于存储已生成HEX字符串的文件
STORE_FILE = "generated_hex_records.txt"

def get_unique_hex():
    # 加载已生成的HEX字符串集合
    try:
        with open(STORE_FILE, 'r') as f:
            existing_records = set(f.read().splitlines())
    except FileNotFoundError:
        # 文件不存在时初始化空集合
        existing_records = set()

    # 循环生成直到找到未重复的字符串
    while True:
        # 生成4位随机HEX字符串(对应2字节随机数据)
        new_hex = binascii.hexlify(os.urandom(2)).decode('utf-8')
        if new_hex not in existing_records:
            # 将新字符串追加到记录文件
            with open(STORE_FILE, 'a') as f:
                f.write(new_hex + '\n')
            return new_hex

if __name__ == "__main__":
    print(get_unique_hex())

关键说明

  • 持久化存储:用文本文件记录所有已生成的HEX字符串,程序每次启动都会读取文件内容,避免跨运行会话的重复。
  • 高效去重:使用集合存储已生成的字符串,检查重复的操作时间复杂度为O(1),比列表更高效。
  • 循环保证唯一性:如果生成的字符串已存在,会自动重新生成,直到找到未出现过的。

注意事项

  1. 2字节的HEX字符串共有16^4 = 65536种唯一组合,当所有组合都被生成后,程序会进入无限循环。如果需要更多唯一值,可以修改os.urandom(2)的参数(比如改成os.urandom(3)生成6位HEX字符串,组合数提升至16^6=16777216)。
  2. 若要重置所有记录,直接删除generated_hex_records.txt文件即可。

内容的提问来源于stack exchange,提问作者Aviril Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 18:42:11