Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从以前的值生成中获取不同的十六进制值?_Python_Loops_Random_Hex - Fatal编程技术网

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

Python 如何从以前的值生成中获取不同的十六进制值?,python,loops,random,hex,Python,Loops,Random,Hex,我正在使用os.Uradom创建一个十六进制值,正如您在上面看到的,我需要生成15个不同的值 我已经开始生成值了,但是我不知道如何使所有的值都与以前生成的值不同。非常感谢您的帮助。如果您需要保证唯一性,您可以继续填充集合,直到其长度正确为止。集合不允许重复值。如果您需要它作为列表,您可以使用list()轻松转换它 def get_random(n): out=set() 而len(out)

我正在使用os.Uradom创建一个十六进制值,正如您在上面看到的,我需要生成15个不同的值


我已经开始生成值了,但是我不知道如何使所有的值都与以前生成的值不同。非常感谢您的帮助。

如果您需要保证唯一性,您可以继续填充
集合
,直到其长度正确为止。集合不允许重复值。如果您需要它作为列表,您可以使用
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))