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

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 中获取微调器单击的项目?

如何从URL获取片段标识符(hash#之后的值)?

使用 C# 代码从 MongoDB 数组中获取不同的值,其中它专门匹配某些值

如何在更新后的风帆中获取以前的值记录?

kotlin-从一个片段更改多个片段的小数位

如何从 URL 获取片段标识符(哈希 # 后的值)?