我试图创建一个函数,它需要两个列表并从它们每个中随机选择一个元素。有没有办法使用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