Python 如何从以前的值生成中获取不同的十六进制值?
我正在使用os.Uradom创建一个十六进制值,正如您在上面看到的,我需要生成15个不同的值Python 如何从以前的值生成中获取不同的十六进制值?,python,loops,random,hex,Python,Loops,Random,Hex,我正在使用os.Uradom创建一个十六进制值,正如您在上面看到的,我需要生成15个不同的值 我已经开始生成值了,但是我不知道如何使所有的值都与以前生成的值不同。非常感谢您的帮助。如果您需要保证唯一性,您可以继续填充集合,直到其长度正确为止。集合不允许重复值。如果您需要它作为列表,您可以使用list()轻松转换它 def get_random(n): out=set() 而len(out)
我已经开始生成值了,但是我不知道如何使所有的值都与以前生成的值不同。非常感谢您的帮助。如果您需要保证唯一性,您可以继续填充
集合
,直到其长度正确为止。集合不允许重复值。如果您需要它作为列表,您可以使用list()
轻松转换它
def get_random(n):
out=set()
而len(out)
当然,对于这一个,您需要小心有足够的随机值来填充
n
长度列表,否则您将陷入一个无休止的循环。最简单的解决方案可能是生成一个包含所有值的列表,然后像这样迭代:
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)
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)
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))