Numpy_random随机数生成及normal方法

⛳随机数创建

  • numpy 中的 random 模块 包含了很多方法可以用来产生随机数,对random 中的一 些常用方法如下表所示
函数名说明
seed确定随机生成器种子(确定一个值或使用默认值然后根据一定的公式或算法产生下一个值, )
permutation返回一个序列的随机排列或返回一个随机排列的范围
shuffle对一个序列就地随机排列
rand产生均匀分布的样本值
randint该方法有三个参数 low、high、size。默认 high 是 None,如果只有 low,范围就是 [0, low)。如果有 high,范围就是 [low, high)
random返回 [0.0, 1.0) 范围的随机数
randn返回一个或一组样本,具有标准正态分布(期望为 0,方差为 1)。dn 表示每个维度,返回值为指定维度的 array

⛳随机生成器种子

确定随机生成器种子是指通过设定一个确定的值作为随机数生成器的种子,可以确保每次运行程序时生成的随机数序列是一样的。这在需要复现实验结果或确保随机性一致性的场景下非常有用。

在Python中,可以使用random.seed()函数来确定随机生成器的种子。该函数接受一个整数作为种子值,通常为非负整数。

例如,以下代码将确定随机生成器的种子为10:

import random

random.seed(10)

在确定了种子之后,无论何时运行程序,使用随机函数(如random.random())生成的随机数序列都将是一样的。这意味着相同的种子将生成相同的随机数序列,因此可以确保结果的可复现性。

应用场景
确定随机生成器种子在人工智能中的应用场景有以下几个:
1. 模型复现和比较:在机器学习和深度学习任务中,使用确定的随机种子可以确保实验的可复现性。通过固定随机种子,可以在不同的运行中生成相同的随机数序列,使得模型的训练过程和结果可以进行比较和验证。
2. 参数初始化:在神经网络中,随机初始化参数是很重要的一步。通过设置相同的随机种子,可以确保在不同的运行中得到相同的初始参数值,从而使得模型的初始化过程具有可重复性。
3. 数据划分:在机器学习任务中,常常需要将数据集划分为训练集、验证集和测试集。通过设置相同的随机种子,可以确保每次划分得到相同的数据集,从而能够进行可靠的模型评估和比较。
4. 数据增强:在图像处理和数据增强的任务中,使用随机生成器种子可以控制随机操作的一致性。通过设置相同的随机种子,可以在不同的运行中生成相同的随机变换,从而使得数据增强过程具有可重复性。
5. 模型融合:在集成学习中,常常使用随机生成器种子来控制不同模型的随机性。通过设置相同的随机种子,可以使得不同模型的随机性一致,从而提高模型融合的稳定性和可靠性。
总之,确定随机生成器种子在人工智能中的应用场景主要涉及到实验的可复现性、模型初始化、数据划分、数据增强和模型融合等方面,它可以帮助研究人员和开发者保证实验的可靠性和稳定性,以及对不同模型和数据处理过程进行可靠比较和评估。


⛳normal方法

normal 方法是 numpy.random 模块中用于生成服从正态分布(高斯分布)的随机数的方法。它的完整形式是 numpy.random.normal(loc=0.0, scale=1.0, size=None)

参数说明:

  • loc:正态分布的均值(期望值)。
  • scale:正态分布的标准差。
  • size:生成随机数的形状。

normal 方法生成的随机数服从均值为 loc,标准差为 scale 的正态分布。默认情况下,locscale 均为 0,生成符合标准正态分布的随机数。

以下是一个示例,展示如何使用 normal 方法生成符合指定均值和标准差的正态分布随机数:

import numpy as np

mean = 5  # 均值
stddev = 2  # 标准差

# 生成符合指定均值和标准差的正态分布随机数
random_values = np.random.normal(loc=mean, scale=stddev, size=100)

print(random_values)

在上述示例中,我们生成了一个均值为 5,标准差为 2 的正态分布随机数样本,样本的维度为 (100,)。输出结果将是一个长度为 100 的一维数组,其中的值符合指定的正态分布。

🎯实战:

# coding:utf-8  
  
import numpy as np  
  
# 该方法返回[0.0, 1.0)范围的整数  
n1 = np.random.random(size=None)  
print(n1)  
print('=' * 20)  
  
print('生成一堆(4, )的随机数组:')  
x = np.random.random(size=4)  
print(x)  
print('=' * 20)  
  
print('生成二维(3, 4)的随机数组:')  
y = np.random.random(size=(3, 4))  
print(y)  
print('=' * 20)  
  
# numpy.random.randint()的使用  
# 生成[0, low)范围的随机整数  
x = np.random.randint(5, size=10)  
print(x)  
print('=' * 20)  
  
# 生成[low, high)范围的随机整数  
y = np.random.randint(5, 10, size=10)  
print(y)  
  
# 生成[low, high)范围的2*4随机整数  
z = np.random.randint(5, 10, size=(2, 4))  
print(z)  
print('=' * 20)  
  
# randn函数返回一个或一组样本, 具有标准正态分布  
x2 = np.random.randn()  
print(x2)  
print('=' * 20)  
  
y2 = np.random.randn(2, 4) # 括号内代表每个维度  
print(y2)  
print('=' * 20)  
  
z2 = np.random.randn(2, 3, 4)  
print(z2)  
print('=' * 20)  
  
# 正态分布(高斯分布) loc:期望 scale:标准差 size:形状  
print(np.random.normal(loc=3, scale=4, size=(2, 2, 3)))  
print('='*20)

result:

0.8205322654954244
====================
生成一堆(4, )的随机数组:
[0.96949012 0.40208029 0.8283478  0.29355413]
====================
生成二维(3, 4)的随机数组:
[[0.99006441 0.36495764 0.15647273 0.87093261]
 [0.175545   0.66801809 0.01999559 0.03290158]
 [0.63049917 0.44274235 0.76772707 0.78283838]]
====================
[0 4 4 3 3 0 0 1 4 1]
====================
[5 9 5 5 6 7 8 7 7 8]
[[9 7 7 8]
 [5 7 5 9]]
====================
-0.5160183772428291
====================
[[ 1.16710583 -1.39993184 -0.73183965  0.84904165]
 [ 0.07000839 -1.62822605  1.42313979 -1.26107878]]
====================
[[[-1.59823199 -1.21555774  0.42976992 -0.28277671]
  [ 0.97048432  1.24734539 -1.08865953 -2.73042734]
  [-2.26503374  0.39609176 -0.28057417  0.11681029]]

 [[-0.36319225 -0.17042762 -0.08166535 -0.7522849 ]
  [ 1.44858914 -0.30473988 -0.25755883 -1.03497845]
  [ 1.26784797 -0.97139835  0.86404127 -2.10215577]]]
====================
[[[-2.07625592 -2.17236836 -0.82803162]
  [-0.96327443 11.88261087  0.1531739 ]]

 [[ 1.74594878  8.29019499  0.89311413]
  [ 5.68569962  2.23622721  4.04480507]]]
====================

进程已结束,退出代码0
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DevGeek

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值