python和Numpy的random函数以及seed的作用

参考:


https://blog.csdn.net/yexudengzhidao/article/details/81051542

 

在做机器学习算法实验的时候,可能会使用一些按照一定的分布随机生成的数值来作为training样本。

这时候我们总是会用到一些python自带的random库中的一些函数, 或者是numpy 中的一些函数。

下面我们来看一下他们的具体用法。

注意:random()是不能直接访问的,需要导入 random 模块,然后通过 random 静态对象调用该方法)

 

01 python 内置的 random 库

其主要的函数如下

print( random.randint(1,10) )        # 产生 1 到 10 的一个整数型随机数  
print( random.random() )             # 产生 0 到 1 之间的随机浮点数
print( random.uniform(1.1,5.4) )     # 产生  1.1 到 5.4 之间的随机浮点数,区间可以不是整数
print( random.choice('tomorrow') )   # 从序列中随机选取一个元素
print( random.randrange(1,100,2) )   # 生成从1到100的间隔为2的随机整数

另外, 还有一个 shuffle 函数,顾名思义,是一个打乱顺序的操作。
a=[1,3,5,6,7]                # 将序列a中的元素顺序打乱
random.shuffle(a)
print(a)

总结, python 自带的 random库只能生成一些特定类型的随机数, 不能定义这些数据的分布情况。

如果你想要定义一组大体上服从高斯分布的随机数, 那么下面的numpy 库将会帮到你。

 

02 numpy 的 random 库

一些常用的如下:

 

random.rand()


numpy.random.rand(d0,d1,…,dn)

rand函数根据给定维度生成[0,1)之间的数据,包含0,不包含1
dn表格每个维度
返回值为指定维度的array

返回[0,1)之间的数,rand()返回一个数字,rand(1)返回一个一维的一个数字数组,rand(2)返回一个一维的2个数字数组,

以此类推。rand(3,4)返回3行4列的二维数组。

 

random.randn()

 

randn函数返回一个或一组样本,具有标准正态分布。
dn表格每个维度
返回值为指定维度的array


用法同np.random.rand()一样,只 不过是这些 0-1 的数据 服从标准的正态分布。
 

 

random.normal()

也是生成正态分布的数据,只不过这个函数可以定义正太分布的参数, μ 和 x(不会打) ,

 

这个函数一共有三个参数,分别是(loc, scale, size),分别代表生成的高斯分布的随机数的均值、方差以及输出的size(想要输出多少个这个的值)

random.random

 

和 python 自带的 random库中的用法相同,不再做过多的介绍。。。

 

random.seed()

其实seed本身并不难理解, 就是一种生成相同随机数的方法,

比如你定义了 seed(5) , 然后生成了一组符合高斯分布的随机数。

       如果在下面的程序当中, 你还想使用这组数据,一模一样的数据, 你也可以先声明 seed = 5

然后在生成数据, 这样你得到的就是和第一次一模一样的数据。

 

然而使人困惑的是 seed当中的参数, 你可能经常会见到类似于 seed(45), seed(20) 等这类的东西,

这和seed(0), seed(1) 有什么区别呢?

其实。。。他们之间没什么区别,只不过是名字不同罢了。

。。。

。。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值