![](/img/trans.png)
[英]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.