关于numpy随机种子 np.random.seed(100)出现奇怪的问题

发布于:2024-12-06 ⋅ 阅读:(23) ⋅ 点赞:(0)

目录

1 下面是具体的代码

1.1 代码里发现的一个随机问题

1.2 原因


1 下面是具体的代码

  • 如果修改 np.random.seed() 里的参数,可以看到最后的np.mean() 会变化
  • 其中np.random.seed(100) 得出的最终np.mean()居然是4.3 不可思议

import numpy as np
import pandas as pd
import scipy as sp
from matplotlib import pyplot as plt
import seaborn as sns
%precision 3

np.random.seed(100)
count1=999

#生成一个总体的正态分布,先不生成数量
population1=sp.stats.norm(loc=0,scale=1)
sample_mean_array=np.zeros(count1)

for i in range(0,count1,1):
    #每次循环时,取1次数量,作为样本
    array1=population1.rvs(size=10+i*10)
    sample_mean_array[i]=np.mean(array1)
    
"""
plt.plot(sample_mean_array)
plt.title("随着抽样规模的变大,多次抽样的样本均值的变化",fontsize=16)
plt.xlabel("sample_size",fontsize=16)
plt.ylabel("sample_mean",fontsize=16)
"""

plt.hist(sample_mean_array)
plt.title("随着抽样规模的变大,多次抽样的样本均值的变化",fontsize=16)
plt.xlabel("sample_size",fontsize=16)
plt.ylabel("频数",fontsize=16)

#print(sample_mean_array)
print(f"取样{count1}次的均值={np.mean(sample_mean_array)}")


1.1 代码里发现的一个随机问题

  • 理论上,总体均值loc=0, 取样999次,不应该有这么离谱的平均值的平均值,应该是很接近0才对

  • ramdon.seed(100) 计算出来的,均值的均值=4.34
  • 碰巧代码里整行用的是ramdon.seed(100),否则还发现不了这么奇怪的事情。。。
  • ramdon.seed(1)  或者ramdon.seed() 计算出来的,均值的均值=0.00099

1.2 原因

  • 暂时不明
  • 虽然是伪随机,999次试验不应该 mean(平均数) 还偏离这么大把?
  • 记录下,小心


网站公告

今日签到

点亮在社区的每一天
去签到