python numpy 常用随机数的产生方法

numpy 中 的random模块有多个函数用于生成不同类型的随机数,常见的有 uniform、rand、random、randint、random_interges

1、np.random.uniform的用法

np.random.uniform(low=0.0, high=1.0, size=None)

  • 作用:可以生成[low,high)中的随机数,可以是单个值,也可以是一维数组,也可以是多维数组
    参数介绍:
  • low :float型,或者是数组类型的,默认为0
  • high:float型,或者是数组类型的,默认为1
  • size:int型,或元组,默认为空
In[1]: import numpy as np In[2]: np.random.uniform()  # 默认为0到1
Out[2]: 0.827455693512018

In[3]: np.random.uniform(1,5)
Out[3]: 2.93533586182789

In[4]: np.random.uniform(1,5,4)  #生成一维数组
Out[4]: array([ 3.18487512,  1.40233721,  3.17543152,  4.06933042])

In[5]: np.random.uniform(1,5,(4,3)) #生成4x3的数组
Out[5]: 
array([[ 2.33083328,  1.592934  ,  2.38072   ],
       [ 1.07485686,  4.93224857,  1.42584919],
       [ 3.2667912 ,  4.57868281,  1.53218578],
       [ 4.17965117,  3.63912616,  2.83516143]])

In[6]: np.random.uniform([1,5],[5,10])  
Out[6]: array([ 2.74315143,  9.4701426 ])

2、np.random.random_sample的用法
和np.random.random作用一样
random_sample(size=None)
- 作用:返回[0,1)之间的浮点型随机数,通过size控制返回的形状

np.random.random_sample()
    0.47108547995356098
type(np.random.random_sample())
    <type 'float'>
np.random.random_sample((5,))
    array([ 0.30220482,  0.86820401,  0.1654503 ,  0.11659149,  0.54323428])

    Three-by-two array of random numbers from [-5, 0):

5 * np.random.random_sample((3, 2)) - 5
    array([[-3.99149989, -0.52338984],
           [-2.99091858, -0.79479508],
           [-1.23204345, -1.75224494]])

3、np.random.rand的用法
rand(d0, d1, …, dn)

  • 作用:返回[0,1)内的浮点数,输入的d0,d1…dn代表维度信息,没有输入时,则返回[0,1)内的一个随机值
In[15]: np.random.rand()
Out[15]: 0.9027797355532956

In[16]:np.random.rand(3,3)
Out[16]: 
array([[ 0.47507608,  0.64225621,  0.9926529 ],
       [ 0.95028412,  0.18413813,  0.91879723],
       [ 0.89995217,  0.42356103,  0.81312942]])

In[17]: np.random.rand(3,3,3)
Out[17]: 
array([[[ 0.30295904,  0.76346848,  0.33125168],
        [ 0.77845927,  0.75020602,  0.84670385],
        [ 0.2329741 ,  0.65962263,  0.93239286]],

       [[ 0.24575304,  0.9019242 ,  0.62390674],
        [ 0.43663215,  0.93187574,  0.75302239],
        [ 0.62658734,  0.01582182,  0.66478944]],

       [[ 0.22152418,  0.51664503,  0.41196781],
        [ 0.47723318,  0.19248885,  0.29699868],
        [ 0.11664651,  0.66718804,  0.39836448]]])

4、np.random.randint的用法
randint(low, high=None, size=None, dtype=’l’)

  • 作用:生成整型随机数,可以是单个随机数,也可以是多维的随机数构成的数组

       参数介绍

  • low:int 型,随机数的下限
  • high:int 型,默认为空,随机数的上限,当此值为空时,函数生成[0,low)区间内的随机数
  • size:int、或ints、或元组,指明生成的随机数的类型
  • dtype:可选’int’ ,’int32’,默认为’l’
In[7]: np.random.randint(4) Out[7]: 1 In[8]: np.random.randint(4,size=4)
Out[8]: array([2, 2, 2, 0])

In[9]: np.random.randint(4,10,size=6)
Out[9]: array([7, 9, 7, 8, 6, 9])

np.random.randint(4,10,size=(2,2),dtype='int32')
Out[10]: 
array([[7, 4],
       [6, 9]])

5、np.random.random_integers的用法
random_integers(low, high=None, size=None)
和randint的用法较为相似,区别在于[low,high]
的右边界能够取到,且改函数即将被抛弃,可以使用
np.random.randint(low,high+1)进行代替

总结:随机数可以分为两大类,一类是浮点型的,常以np.random.uniform为代表,np.random.rand,np.random.radnom和np.random.random_simple可以看作是np.random.uniform的特例;另一类是整数型的,以np.random.randint为代表,也有np.random.random_integers 但是后者将被前者取代

 
 
 
### 使用 PythonNumPy 生成随机数 #### 生成标准正态分布的随机数 可以利用 `numpy.random.randn()` 函数来获取来自标准正态分布(均值为0,方差为1)的样本。 ```python import numpy as np # 获取两个来自标准正态分布的浮点数数组 random_samples = np.random.randn(2) print(random_samples) # 输出类似于 [-0.78345655 0.9477277 ] ``` [^1] #### 创建指定范围内整数值的随机一维数组 通过调用 `np.random.randint(low, high=None, size=None)` 方法可创建给定范围内的随机整数。这里展示了一个例子,它会生成长度为10的一维数组,其中包含介于0到5之间(不包括5)的随机整数。 ```python import numpy as np arr = np.random.randint(0, 6, size=10) print(arr) ``` [^3] #### 设置随机种子以确保结果重现性 为了使每次运行程序时都能得到相同的结果,在执行任何其他命令之前应该先设定好随机种子。这可以通过调用 `np.random.seed(seed_value)` 来完成,`seed_value` 是一个任意选定的整数。 ```python import numpy as np np.random.seed(1) first_run = np.random.randint(2, 10, size=3) second_run = np.random.randint(2, 10, size=3) print(first_run) # 始终打印相同的三个数字 print(second_run) # 同样始终打印另外一组固定的三个数字 ``` [^4] #### 构建多维随机矩阵 如果需要构建一个多维度的随机整数矩阵,则可以直接向 `randint` 提供形状参数作为列表或元组形式传入。 ```python import numpy as np matrix = np.random.randint(1, 100, [5, 5]) print(matrix) ``` [^5]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值