Python伪随机数random和seed详解

伪随机数random和seed

初始化随机数生成器:random.seed(a=None)

  • 如果 a 被省略或为 None ,则使用当前系统时间
  • 每给定一个seed,它会生成一个序列,如序列X: 0.1,3.2,1.5,9.7…
    你每次random.random()只是按顺序取了一个X中的点

对于同一个seed,它产生的序列是固定的,所以随机化结果必然相同,而系统时间在不断变大,所以产生的序列必然不同

Python代码示例

import random
print("不加seed语句时,默认是用random.seed()")
print(random.random())
print(random.random())
print(random.random())
print("seed=45")
random.seed(45)
print(random.random())  # 取seed=45产生序列的第一个元素
print(random.random())  # 取seed=45产生序列的第二个元素
print(random.random())  # 取seed=45产生序列的第三个元素

print("\nseed=45")
random.seed(45)
print(random.random())
print(random.random())
print(random.random())

print("\nseed=当前系统时间")
random.seed()  # 默认是当前系统时间
print(random.random())
print(random.random())
print(random.random())

print("\nseed=当前系统时间")
random.seed()
print(random.random())
print(random.random())
print(random.random())

输出结果

不加seed语句时,默认是用random.seed()
0.20832862243131767
0.4210403813034972
0.4153058477463908
seed=45
0.2718754143840908
0.48802820785090784
0.08187934237116656

seed=45
0.2718754143840908
0.48802820785090784
0.08187934237116656

seed=当前系统时间
0.9664157011016027
0.9963620166960119
0.00929090874812366

seed=当前系统时间
0.1560896344276015
0.26724242598166137
0.5839125852630351

应用场景

Weka每次会初始化随机生成器(给定一个特定seed),这主要是为了保证你明天做这个实验时得到的还是相同的结果

参考资料

https://stackoverflow.com/questions/22639587/random-seed-what-does-it-do
在这里插入图片描述

发布了308 篇原创文章 · 获赞 149 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/qq_43827595/article/details/105158071