簡體   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