我试图创建一个函数,它需要两个列表并从它们每个中随机选择一个元素。有没有办法使用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. Ruby从选择列表中选择随机元素与optgroup
- 4. 如何从numpy列表中随机选择n个元素?
- 5. 在R列表中选择随机元素?
- 6. 从数组列表中随机选择5个元素而不重复元素
- 7. 如何随机选取列表中的下一个元素?
- 8. 球拍 - 从列表中挑选一个随机元素
- 9. 随机选择一个公式,并从列表中回答 - PYTHON
- 10. 从阵列选择一个随机元素与jQuery
- 11. 选择5个随机元素
- 12. 如何在std :: set中选择一个随机元素?
- 13. 生成列表中随机元素的一个元素
- 14. 如何随机选择一个数组,然后在javaScript中随机选择一个元素?
- 15. 只是在列表中没有选择的情况下从列表中伪随机选取一个元素
- 16. 如何从列表中选择一个随机元素<action>
- 17. 以概率从列表中选择随机元素
- 18. 使用Python从替换列表中选取一个随机元素
- 19. python3如何在列表中的随机元素的任一侧选择两个元素?
- 20. 如何从Python中的数组中选择一个随机元素?
- 21. 如何从coredata中随机选择一个元素swift
- 22. 从PHP关联数组中选择一个随机元素
- 23. 与时间变量做一个列表,并选择随机的那些元素
- 24. 随机选择从列表
- 25. Python在Python中随机选择多个选择
- 26. 从Python中的前一个选择中随机选择
- 27. 如何从列表中选择随机元素排除某些列表?
- 28. 随机选择Python列表中的列表,取决于权重
- 29. Python:从多个列表中随机选择,无重复
- 30. 选择随机XML元素 - 不工作
确定性地(伪随机)或完全随机?考虑是否要保留两个单独的RNG,每个列表一个? – smci