我想獲得(65,90)和(97,122)範圍之間的隨機數。我可以選擇範圍內的隨機數使用生成兩個範圍之間的隨機整數
import random
random.randint(65,95)
但'randint`採取唯一的整數,所以我怎麼辦?任何想法
在此先感謝
我想獲得(65,90)和(97,122)範圍之間的隨機數。我可以選擇範圍內的隨機數使用生成兩個範圍之間的隨機整數
import random
random.randint(65,95)
但'randint`採取唯一的整數,所以我怎麼辦?任何想法
在此先感謝
def random_of_ranges(*ranges):
all_ranges = sum(ranges, [])
return random.choice(all_ranges)
print(random_of_ranges(range(65, 90), range(97, 122)))
這是處理這是一個非常普遍的方式。您可以傳遞任意數量的範圍(或它們的子集)。但它相當昂貴,特別是對於非常大的套件(如range(1, 100000000)
)。對於你的用例(可能還有其他幾個人),這就足夠了。
你爲什麼要在這裏建立'all_ranges'? 'random.choice(random.choice(ranges))'同樣沒有每次重建列表... –
如果所有範圍的大小相同(在上面的Q中就是這種情況),它也是一樣的。在一般情況下,這不一定是正確的,'選擇(選擇([範圍(1,100),範圍(200,202)]))'將比e更頻繁地返回200和201。 G。 50或37.但是,當然,建立這個列表只需要一次,然後在所有調用中使用它都是一個很好的優化。 – Alfe
好點 - 做得好:) –
或者:
def random():
arr1 = np.random.randint(65,90)
arr2 = np.random.randint(97,122)
out = np.stack((arr1,arr2))
out = np.random.choice(out)
return out
您可以生成2個範圍,然後選擇random.choice([first range rand,second range rand])' – depperm
'i = randint(65,115); i + = 7如果我> 90 else 0' – Alfe
你確定你不是真的在'random.choice(string.ascii_letters)'之後嗎? –