[英]Generate random strings of fixed length from given characters with equal occurance
[英]Generate random binary strings of length 32
我想生成 500 个长度为 32 的随机二进制字符串(即,从00000...0
到1111...1
,其中每个字符串的长度为 32)。 我想知道如何有效地或 Python 地做到这一点。
现在,我在0
和1
之间随机选择 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.