如何从以前的值生成中获取不同的十六进制值?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从以前的值生成中获取不同的十六进制值?相关的知识,希望对你有一定的参考价值。
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
长度列表,否则你最终会陷入无限循环。
以上是关于如何从以前的值生成中获取不同的十六进制值?的主要内容,如果未能解决你的问题,请参考以下文章
如何从该片段中的 onItemSelectedListener 中获取微调器单击的项目?