#! usr/bin/env python
# coding: utf-8
# 使用numpy中的随机函数 学习笔记
# 2018年06月04日11:38:43 北京昌平
import numpy.matlib
import numpy as np
# 说明,每块代码运行时,请将其他模块注释:
# 注释方法1:选中要注释的部分,然后同时按住ctrl和/按键
# 注释方法2:采用字符注释,在要注释的代码前后各加上三个引号
# # 参考:https://docs.scipy.org/doc/numpy/reference/generated/numpy.matlib.rand.html#numpy.matlib.rand
# # numpy.matlib.rand() 返回一个numpy的矩阵
# # 值在[0,1)的区域内
# random1 = numpy.matlib.rand(2)
# # 表示生成一个一维具有两个元素的随机数
# random2 = numpy.matlib.rand(2,3)
# # 表示生成一个2*3的矩阵
# print(random1)
# print(type(random1))
# print(random2)
# # 注意到上面这个随机数的生成,是不可以重复的,也就是说运行时间不同,得到的值不一样
# # numpy.matlib.randn()构造服从均值为0方差为1的正态分布的随机数
# random3 = numpy.random.randn(10000)
# # 产生很多个服从某分布的随机数组,后面可以验证是否服从这个分布
# # 注意到函数的输入可以是多个,每个数则表示一维。
# # 如numpy.random.randn(10,10,10)则表示生成10*10*10的三维随机矩阵。
# print(random3)
# mean = np.mean(random3)
# # 这是numpy中计算均值的函数,直接调用.
# print(mean)
# variance = np.std(random3) ** 2
# # 这是numpy中计算标准差的函数,直接调用,平方后就得到了方差
# print(variance)
# # 可以从打印的结果中看出这是服从均值为0,方差为1的正太分布的
# # 注意,如果输出的数量太少,可能结果偏差比较大。
#
# # 通过numpy.random.randn函数如何生成服从指定均值和方差的矩阵呢?
# # 同理,我们上面也会问如何生成指定范围的随机数呢?
# # 实际上,我们都可以利用单位函数来构造我们想要的随机数
# # sigma * np.matlib.randn(...) + mu
# # 上面就是生成了指定方差为sigma平方,均值为mu的随机数
# random4 = 2.5 * np.matlib.randn((1000, 4000)) + 3
# mean4 = np.mean(random4)
# variance4 = np.std(random4) ** 2
# print(random4)
# print(mean4)
# print(variance4)
# # 从打印结果可以看到均值为2.999.方差为6.250,和理论值很接近
# # numpy.random.rand产生均匀分布的随机数
# random5 = np.random.rand(3,5)
# print(random5)
# 2018年06月04日20:56:44 于北京昌平
# 介绍到这里,可以看出随机数的构造是可以服从某些分布的
# 可以利用一些基本分布函数来构造更加复杂的分布
# 除了正太分布,0-1分布,均匀分布,还有其他分布,如果有需要,可以自行查找官网
# 有时候,我们可能需要随机数可以重现,这时需要用到随机数种子
# 种子唯一,则随机数也会唯一
np.random.seed(20)
random6 = np.random.rand(3,3)
print(random6)
# 注意,如果我们后面还用到随机数,一定要重新设定随机数的种子,否则就不是随机数了
# 至于随机数种子,以及计算机如何产生随机数的,有兴趣的可以进一步了解。
python+numpy 随机数的生成,正态分布,0-1分布,均匀分布及随机数种子
最新推荐文章于 2024-05-12 20:01:39 发布