【发布时间】:2016-06-25 17:30:03
【问题描述】:
我想通过在 python 中给出 0 到 1 之间的种子来生成固定随机数列表。例如,l = [0.1, 0.5, 0.6, 0.9, 0.75]。我可以通过使用 random.random() 来获得它。但每次它都会给出一个新的随机数列表。我想通过提供一些种子来修复它。
我该怎么做。提前致谢!
【问题讨论】:
标签: python python-3.x random
我想通过在 python 中给出 0 到 1 之间的种子来生成固定随机数列表。例如,l = [0.1, 0.5, 0.6, 0.9, 0.75]。我可以通过使用 random.random() 来获得它。但每次它都会给出一个新的随机数列表。我想通过提供一些种子来修复它。
我该怎么做。提前致谢!
【问题讨论】:
标签: python python-3.x random
查看 random.seed() 的 pydocs 页面
[>>> seed = 123
[>>> random.seed(seed)
[>>> i = [random.random() for _ in xrange(5)]
[>>> print i
[0.052363598850944326, 0.08718667752263232, 0.4072417636703983, 0.10770023493843905, 0.9011988779516946]
每次调用上述方法都会返回相同的列表。换句话说,输出是确定性和可预测的。
请注意,Python 3 用户必须使用[random.random() for _ in range(5)]。
【讨论】:
for _ in xrange() 的奖励。
你可以这样做:
import random
l = []
n = 10 # you can change it to whatever you want, it is list length
for i in range(n):
random.seed(i)
l += [random.random()]
print(l)
它总是会给出相同的随机列表。
【讨论】:
random.random 生成一个新种子。在循环之前调用random.seed(0) 或任何特定号码都可以正常工作。此外,l.append(random.random()) 在我看来是构建该列表的首选方式
random.seed(i) 应该在循环之前。
random.seed(0),也可以只使用l = [random.random() for i in range(n)]。