欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

python机器学习库numpy---7.1、生成随机数-均匀分布

最编程 2024-01-04 10:36:28
...

python机器学习库numpy---7.1、生成随机数-均匀分布

一、总结

一句话总结:

均匀分布常用主要四个方法,表示[0, 1)之间均匀分布的rand和random,表示[low, high)之间的uniform,随机整数randint
a、服从[0, 1)之间的均匀分布:
numpy.random.rand(d0, d1, ..., dn)

b、[0, 1)之间均匀抽样:
numpy.random.random(size=None)
和rand函数功能一样,参数不同而已

c、在区间[low, high)中均匀分布:
numpy.random.uniform(low=0.0, high=1.0, size=None)

d、随机整数:在区间[low, high)中离散均匀抽样:
numpy.random.randint(low, high=None, size=None, dtype='l')

 

 

 

 

二、生成随机数-均匀分布

博客对应课程的视频位置:7.1、生成随机数-均匀分布-范仁义-读书编程笔记
https://www.fanrenyi.com/video/38/347

 

7、生成随机数

(1)、均匀分布

a、服从[0, 1)之间的均匀分布:
numpy.random.rand(d0, d1, ..., dn)

b、[0, 1)之间均匀抽样:
numpy.random.random(size=None)
和rand函数功能一样,参数不同而已

c、在区间[low, high)中均匀分布:
numpy.random.uniform(low=0.0, high=1.0, size=None)

d、随机整数:在区间[low, high)中离散均匀抽样:
numpy.random.randint(low, high=None, size=None, dtype='l')


python中,random.random( )和random.rand( )功能完全一样,numpy为什么要留两个表示0-1均匀分布的函数?

历史原因,可能是为了使 Matlab 用户更容易学习 python+numpy 的组合。如果把其中一个函数去掉,所带来的麻烦远大于好处,因为有很多现存的代码分别使用了这两个函数。

(2)、正态分布

a、标准正态分布(均值为0,标准差为1):
numpy.random.randn(d0, d1, ..., dn)

b、服从μ=loc,σ=scale 的正态分布:
numpy.random.normal(loc=0.0, scale=1.0, size=None)


(3)、随机种子

RandomState:定义种子类:RandomState是一个种子类,提供了各种种子方法,最常用seed

seed([seed]):定义全局种子:参数为整数或者矩阵

代码示例:

np.random.seed(1234) #设置随机种子为1234

(1)、均匀分布

(a)、服从[0, 1)之间的均匀分布:numpy.random.rand(d0, d1, ..., dn)

作用:

产生一个给定形状的数组(其实应该是ndarray对象或者是一个单值),数组中的值服从[0, 1)之间的均匀分布。

参数:

d0, d, ..., dn : int,可选。如果没有参数则返回一个float型的随机数,该随机数服从[0, 1)之间的均匀分布。

返回值:

ndarray对象或者一个float型的值
In [2]:
import numpy as np
print(np.random.rand())
0.5453255015277448
In [3]:
print(np.random.rand(3))
[0.90757678 0.03145185 0.95313326]
In [4]:
print(np.random.rand(3,4))
[[0.97597192 0.28732266 0.17960605 0.85840045]
 [0.8457097  0.11786519 0.59764586 0.5142609 ]
 [0.68330079 0.44224353 0.36096329 0.32893185]]
In [5]:
import matplotlib.pyplot as plt  # 导入matplotlib模块,用于图表辅助分析
%matplotlib inline

# 解决中文乱码
plt.rcParams["font.sans-serif"]=["SimHei"]
plt.rcParams["font.family"]="sans-serif"
# 解决负号无法显示的问题
plt.rcParams['axes.unicode_minus'] =False

data_x = np.random.rand(1000)
data_y = np.random.rand(1000)
plt.scatter(data_x,data_y)
Out[5]:
<matplotlib.collections.PathCollection at 0x21cf86ec448>
(b)、[0, 1)之间均匀抽样:numpy.random.random(size=None)

作用:

返回从[0, 1)之间均匀抽样的数组,size指定形状。

参数:

size:

int型或int型的元组,如果不提供则返回一个服从该分布的随机数

返回值:

float型或者float型的ndarray对象
In [6]:
# 无参数
print(np.random.random())
0.25733366399724056
In [8]:
print(np.random.random(size=(3,)))
[0.87588153 0.41083416 0.92811127]
In [9]:
# 元组做参数
print(np.random.random((4,3)))
[[0.03027158 0.09068682 0.08516664]
 [0.88818931 0.7542361  0.97077598]
 [0.58459742 0.66082839 0.51209488]
 [0.52616617 0.99295998 0.9026425 ]]
In [10]:
import matplotlib.pyplot as plt  # 导入matplotlib模块,用于图表辅助分析
%matplotlib inline

# 解决中文乱码
plt.rcParams["font.sans-serif"]=["SimHei"]
plt.rcParams["font.family"]="sans-serif"
# 解决负号无法显示的问题
plt.rcParams['axes.unicode_minus'] =False

data_x = np.random.random((1000,))
data_y = np.random.random((1000,))
plt.scatter(data_x,data_y)