我試圖創建一個函數,它需要兩個列表並從它們每個中隨機選擇一個元素。有沒有辦法使用random.seed函數來做到這一點?在Python中選擇一個隨機列表元素
4
A
回答
19
您可以使用random.choice
從序列中選取一個隨機元素(如列表)。
如果你的兩個名單list1
和list2
,這將是:
a = random.choice(list1)
b = random.choice(list2)
你確定要使用random.seed
?這將每次都以一致的方式初始化隨機數生成器,如果希望後續運行相同但通常不需要,這可能非常有用。例如,以下函數將始終返回8,即使它看起來應該隨機選擇一個介於0和10之間的數字。
>>> def not_very_random():
... random.seed(0)
... return random.choice(range(10))
...
>>> not_very_random()
8
>>> not_very_random()
8
>>> not_very_random()
8
>>> not_very_random()
8
+0
我給出了下面的OO版本(從* list *繼承並定義了一個方法* getranditem()*)。開始調用*'random.seed()'*不是很簡單,所以最好用一個對象的*'__init __()'*或*'seed()'*方法來封裝。 – smci
1
注意:@ F.J的解決方案不復雜且更好。
使用random.randint
以從列表中挑選一個僞隨機指數。然後使用該索引來選擇元素:
>>> import random as r
>>> r.seed(14) # used random number generator of ... my head ... to get 14
>>> mylist = [1,2,3,4,5]
>>> mylist[r.randint(0, len(mylist) - 1)]
您可以輕鬆地將其擴展到兩個列表上。
爲什麼要使用random.seed
?
例子(使用Python2.7):
>>> import collections as c
>>> c.Counter([mylist[r.randint(0, len(mylist) - 1)] for x in range(200)])
Counter({1: 44, 5: 43, 2: 40, 3: 39, 4: 34})
是指隨機還不夠嗎?
-1
我完全重複了以前的答案。這是一個包含隨機數生成器(帶有可選種子)和列表的類。這是對F.J.的一個小小的改進,因爲它爲測試提供了確定性的行爲。第一個列表上調用choice()
應該不會影響第二個列表中,反之亦然:
class rlist():
def __init__(self, lst, rg=None, rseed=None):
self.lst = lst
if rg is not None:
self.rg = rg
else:
self.rg = random.Random()
if rseed is not None:
self.rg.seed(rseed)
def choice(self):
return self.rg.choice(self.lst)
if __name__ == '__main__':
rl1 = rlist([1,2,3,4,5], rseed=1234)
rl2 = rlist(['a','b','c','d','e'], rseed=1234)
print 'First call:'
print rl1.choice(),rl2.choice()
print 'Second call:'
print rl1.choice(),rl2.choice()
相關問題
- 1. 從Selenium Webdriver的列表中選擇一個隨機元素Java
- 2. Python列表隨機選擇
- 3. 選擇一個隨機li元素 - jQuery
- 4. 在另一個列表中插入一個隨機選擇的元素
- 5. Ruby從選擇列表中選擇隨機元素與optgroup
- 6. 選擇從列表中選擇多個隨機元素在Java中
- 7. 隨機從列表中選擇x個元素
- 8. 如何從numpy列表中隨機選擇n個元素?
- 9. 隨機選取一組元素在Python
- 10. 列表中的隨機元素 - Python
- 11. Python不從列表中隨機選擇
- 12. 選擇隨機JSON元素
- 13. 在條件屬性列表中選擇隨機元素
- 14. 在R列表中選擇隨機元素?
- 15. Android的多選列表中選擇上滾動隨機元素
- 16. 在一個系列中選擇一個隨機數(python)
- 17. 從數組列表中隨機選擇5個元素而不重複元素
- 18. 球拍 - 從列表中挑選一個隨機元素
- 19. 如何隨機選取列表中的下一個元素?
- 20. 隨機選擇一個公式,並從列表中回答 - PYTHON
- 21. 從緊湊INT選擇一個隨機元素陣列
- 22. 的元素選擇一個隨機排列配重塊
- 23. 從陣列選擇一個隨機元素與jQuery
- 24. 如何從列表中隨機選擇一個元組?
- 25. 選擇5個隨機元素
- 26. 我們如何在數組中選擇一個隨機元素?
- 27. 如何在std :: set中選擇一個隨機元素?
- 28. 生成列表中隨機元素的一個元素
- 29. 如何隨機選擇一個數組,然後在javaScript中隨機選擇一個元素?
- 30. 只是在列表中沒有選擇的情況下從列表中僞隨機選取一個元素
確定性地(僞隨機)或完全隨機?考慮是否要保留兩個單獨的RNG,每個列表一個? – smci