之前程序截图上传错了,与文字不符,改动是为了看起来更加大一点。
应该为
result = np.random.normal(10000, 5000, 1000000)
加大方差,换句话说数据振幅更大,取平均值10000,方差10000。这样的数据彼此差别很大,我随机产生一组,然后从中取最开始30个感受一下就可以知道。
>>> np.random.normal(10000, 10000, 1000000)[0:30]
array([ 18376.93875825, 19114.60024465, 18479.67977211, 3575.91864197,
3108.67192603, 4091.94171461, 19250.39572106, 31365.00030684,
-12711.5102704 , 26970.14526856, 9166.87183765, 21357.37512818,
19297.13713559, 22919.55150555, 3025.71463615, -2523.99604488,
14475.70086213, 26940.70302404, 13865.52614117, 18243.6073329 ,
12504.11159407, 12947.37672149, 16279.51744598, 6110.53044142,
-494.28437916, 3766.17416612, 3362.31711771, 3981.87197086,
9921.77536439, -8055.58595069])
我们来看看数学期望、标准差、三阶矩开乘方(标准差是二阶矩开乘方)


我们进行100轮实验,每轮实验从1000000个数据中随机取50个数据,然后计算平均值、标准差、三阶矩立方根。
All:
mean 9987.399566963837
std 10000.537939433838
std_3 11687.473089149114
mean_max 12572.672294693994
mean_min 6742.592642561673
std_max 12053.5
15070523254
std_min 7483.274862928862
std_3_max 12278.774093641017
std_3_min 11687.598819621848
发现,平均值从6742~12572,比起10000也不算太离谱,毕竟有10000的方差,方差7483~12053,围绕10000也不算太离谱,三阶一致性就更加好了。
说明还是50取的太小,我们取500做100轮试试。
All:
mean 10001.227270505542
std 10009.911214883783
std_3 11700.871884279448
mean_max 11071.09191911349
mean_min 8867.035352852348
std_max 11134.648893786023
std_min 9255.596983358897
std_3_max 11775.220947240325
std_3_min 11700.871993642737
比50情况好多了。
那如果每次取5000个数据做100轮
All:
mean 10009.943217351638
std 9992.61201335704
std_3 11675.775420941236
mean_max 10459.291045938362
mean_min 9740.82774803951
std_max 10184.441024724065
std_min 9713.748371073589
std_3_max 11687.293227135506
std_3_min 11675.773707783808
这个一致性就更加厉害,注意,这可是100轮这样的抽样,而且是放在一起看平均值、方差、三次矩的最大最小值。
那些对随机有误解的人,建议仔细看一看这篇,品味品味,随机并不是只有偶然性的,其必然性也是一样的明显。