繁体   English   中英

生成长度为 32 的随机二进制字符串

[英]Generate random binary strings of length 32

我想生成 500 个长度为 32 的随机二进制字符串(即,从00000...01111...1 ,其中每个字符串的长度为 32)。 我想知道如何有效地或 Python 地做到这一点。

现在,我在01之间随机选择 32 次,然后 append 将结果转换为字符串。 这似乎非常低效而且不是pythonic。 我可以使用一些库函数吗?

import random

rnd_32bit = f'{random.getrandbits(32):=032b}'

由于 python 3.9 你可以这样做:

from random import randbytes

def rand_32bit_string(byte_count):
    return "{0:b}".format(int.from_bytes(randbytes(4), "big"))

最简单的方法可能是使用secrets库(从 python 3.6 开始的 python 标准库的一部分)及其token_bytes function。

import secrets

s = secrets.token_bytes(nbytes=4)

这个问题有各种解决方案,用于将bytes转换为str字串。 您可以执行以下操作:

s = bin(int(secrets.token_hex(nbytes=4), 16))[2:].rjust(32, '0')

将其放入for循环中,您就完成了!


在 python 3.9 中,您还可以选择random.randbytes ,例如random.randbytes(4) ,其行为类似(尽管secrets将使用加密安全的随机源,如果这对您很重要)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM