如果我有一個十六進制范圍0x2080000000-0x217fffffff,并且如果我需要從這個范圍中選擇一個隨機十六進制數或多個十六進制數,我該如何使用 python 來做到這一點?
uj5u.com熱心網友回復:
使用模塊中的randintrandom:
from random import randint
x = randint(0x2080000000, 0x217fffffff)
print(f"Decimal : {x}\n"
f"Hexadecimal: {hex(x)}")
上面在閉合區間中繪制一個隨機整數[0x2080000000, 0x217fffffff]并將其分配給x。然后它使用內置函式hex來獲取 integer 的十六進制表示(作為字串)x。
樣本輸出
Decimal : 140929308832
Hexadecimal: 0x20d00a98a0
多個隨機整數
如果您需要在閉區間內[0x2080000000, 0x217fffffff] 沒有重復的多個隨機整數,您可以使用sample:
from random import sample
y = sample(range(0x2080000000, 0x2180000000), 10)
list這將回傳上述閉合區間中的 10 個隨機整數元素,沒有重復。請注意使用 of0x2180000000而不是0x217fffffffas range(start, stop)在半開區間中產生整數,[start, stop)因此我們需要加0x217fffffff1 以便range(0x2080000000, 0x2180000000)在閉區間中產生整數[0x2080000000, 0x217fffffff]。
如果你不關心重復,你可以使用
y = [randint(0x2080000000, 0x217fffffff) for i in range(10)]
在封閉區間內創建一個 10 元素list的隨機整數(可以重復)。
加密安全亂數
如果您需要加密安全的隨機性,請先執行(檔案)
from random import SystemRandom
rgen = SystemRandom()
然后,而不是
- 使用
randint(),使用rgen.randint(); - 使用
sample(),使用rgen.sample()。
uj5u.com熱心網友回復:
Python 將十六進制存盤為 int,因此您可以使用 random.randint() 接收兩個整數來定義范圍并回傳該范圍內的整數,然后您可以將結果整數轉換為十六進制。
from random import randint
my_hex = hex(randint(0x2080000000, 0x217fffffff))
print(my_hex)
列印一個隨機十六進制:
0x20c30ad886
要選擇多個十六進制數字,請使用 random.choices,然后將生成的整數串列轉換為十六進制串列
from random import choices
hex_list = [hex(i) for i in choices(range(0x2080000000, 0x217fffffff), k=5)]
print(hex_list)
十六進制數字串列
['0x2146f52eae', '0x212b07a57c', '0x20afd61152', '0x20e5ad73b9', '0x21620afcb3']
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/471315.html
標籤:Python python-3.x 随机的 十六进制
