如何从以前的值生成中获取不同的十六进制值?

问题描述 投票:0回答:2
import os,binascii
print binascii.b2a_hex(os.urandom(1))

我正在使用os.urandom创建一个十六进制值,如上所示,我需要生成15个不同的值。

我得到了生成值,但我不知道如何使它所有值都与之前生成的值不同。任何帮助表示赞赏。

python loops random hex
2个回答
1
投票

可能最简单的解决方案是生成所有值的列表,shuffle它然后只是迭代它们像这样:

import binascii
import random

byte_list = [i for i in range(256)]
random.shuffle(byte_list)
for byte in byte_list:
    print binascii.b2a_hex(chr(byte))

0
投票

如果你需要保证唯一性,你可以继续填充set,直到它的长度正确。集不允许重复值。如果您需要它作为列表,您可以使用list()轻松转换它。

def get_random(n):
    out = set()
    while len(out) < n:
        out.add(binascii.b2a_hex(os.urandom(1)))
    return list(out)

print get_random(15)

当然对于这个,你需要注意有足够的随机值来填充n长度列表,否则你最终会陷入无限循环。

© www.soinside.com 2019 - 2024. All rights reserved.