import os,binascii
print binascii.b2a_hex(os.urandom(1))
我正在使用os.urandom
创建一个十六进制值,如上所示,我需要生成15个不同的值。
我得到了生成值,但我不知道如何使它所有值都与之前生成的值不同。任何帮助表示赞赏。
可能最简单的解决方案是生成所有值的列表,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))
如果你需要保证唯一性,你可以继续填充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
长度列表,否则你最终会陷入无限循环。