当前位置: 首页 > wzjs >正文

网站更改搜索关键词排名查询

网站更改,搜索关键词排名查询,有限公司是什么性质企业,简述电子商务网站开发的基本流程NumPy-随机数生成详解一、随机数生成的基础:伪随机数与种子1. 伪随机数的本质2. 种子的设置:确保结果可复现二、常用随机数生成函数1. 均匀分布随机数2. 正态分布随机数3. 整数随机数4. 其他常用分布三、随机数生成的进阶操作1. 随机排列与洗牌2. 控制随…

NumPy-随机数生成详解

    • 一、随机数生成的基础:伪随机数与种子
      • 1. 伪随机数的本质
      • 2. 种子的设置:确保结果可复现
    • 二、常用随机数生成函数
      • 1. 均匀分布随机数
      • 2. 正态分布随机数
      • 3. 整数随机数
      • 4. 其他常用分布
    • 三、随机数生成的进阶操作
      • 1. 随机排列与洗牌
      • 2. 控制随机数的维度与形状
    • 四、随机数生成的应用场景
      • 1. 数据增强
      • 2. 蒙特卡洛模拟
      • 3. 随机初始化参数
    • 五、注意事项

NumPy作为Python数值计算的核心库,提供了功能强大、性能高效的随机数生成模块——numpy.random,该模块不仅能生成各种分布的随机数,还能满足可重复性、批量生成等需求。

一、随机数生成的基础:伪随机数与种子

1. 伪随机数的本质

计算机生成的随机数并非真正意义上的随机,而是通过确定性算法产生的伪随机数。这些随机数看似无规律,但实际上由初始值(种子)完全决定。只要种子相同,生成的随机数序列就会完全一致,这一特性为实验的可重复性提供了保障。

2. 种子的设置:确保结果可复现

通过np.random.seed()函数可以设置随机数种子,固定随机数序列:

import numpy as np# 设置种子
np.random.seed(42)
# 生成随机数
print(np.random.rand(3))  # [0.37454012 0.95071431 0.73199394]# 重新设置相同种子,生成相同序列
np.random.seed(42)
print(np.random.rand(3))  # [0.37454012 0.95071431 0.73199394]

在科研实验或程序调试中,设置种子能确保多次运行的结果一致,便于问题定位和结果验证。

二、常用随机数生成函数

1. 均匀分布随机数

均匀分布是最常用的随机分布之一,其随机数在指定区间内均匀取值。

  • np.random.rand(d0, d1, ..., dn):生成[0, 1)区间内的均匀分布随机数,形状由参数指定。

    # 生成2行3列的均匀分布随机数
    arr = np.random.rand(2, 3)
    print(arr)
    # 输出:
    # [[0.59865848 0.15601864 0.15599452]
    #  [0.05808361 0.86617615 0.60111501]]
    
  • np.random.uniform(low=0.0, high=1.0, size=None):生成[low, high)区间内的均匀分布随机数,更灵活地指定范围。

    # 生成5个[10, 20)区间的均匀分布随机数
    arr = np.random.uniform(10, 20, size=5)
    print(arr)  # [12.05844943 17.8158732  11.18274425 16.17365467 12.11334366]
    

2. 正态分布随机数

正态分布(高斯分布)是自然界中最常见的分布之一,许多现象都近似遵循正态分布。

  • np.random.randn(d0, d1, ..., dn):生成均值为0、标准差为1的标准正态分布随机数。

    # 生成3个标准正态分布随机数
    arr = np.random.randn(3)
    print(arr)  # [0.49671415 -0.1382643  0.64768854]
    
  • np.random.normal(loc=0.0, scale=1.0, size=None):生成均值为loc、标准差为scale的正态分布随机数。

    # 生成2行2列、均值为5、标准差为2的正态分布随机数
    arr = np.random.normal(loc=5, scale=2, size=(2, 2))
    print(arr)
    # 输出:
    # [[4.87300259 3.87939188]
    #  [5.85916983 6.23844269]]
    

3. 整数随机数

在需要生成离散整数的场景中,以下函数非常实用。

  • np.random.randint(low, high=None, size=None, dtype=int):生成[low, high)区间内的整数随机数。

    # 生成5个[1, 10)区间的整数
    arr = np.random.randint(1, 10, size=5)
    print(arr)  # [3 7 8 5 9]
    
  • np.random.choice(a, size=None, replace=True, p=None):从数组a中随机选择元素,可指定概率分布。

    # 从[1, 2, 3]中随机选择3个元素(可重复)
    arr = np.random.choice([1, 2, 3], size=3)
    print(arr)  # [2 1 3]# 按指定概率选择元素(p的和必须为1)
    arr = np.random.choice([1, 2, 3], size=3, p=[0.1, 0.6, 0.3])
    print(arr)  # [2 2 3](2被选中的概率更高)
    

4. 其他常用分布

除了上述分布,numpy.random还支持多种其他分布的随机数生成,如指数分布、泊松分布等。

  • np.random.exponential(scale=1.0, size=None):生成指数分布随机数,scale为1/λ。

    arr = np.random.exponential(scale=2, size=3)
    print(arr)  # [1.52275333 0.88770418 3.14869517]
    
  • np.random.poisson(lam=1.0, size=None):生成泊松分布随机数,lam为λ(均值和方差)。

    arr = np.random.poisson(lam=3, size=4)
    print(arr)  # [4 2 3 5]
    

三、随机数生成的进阶操作

1. 随机排列与洗牌

在需要打乱数据顺序的场景中,随机排列函数非常有用。

  • np.random.permutation(x):返回一个随机排列的数组,或对整数序列进行随机排列。

    # 对数组进行随机排列
    arr = np.array([1, 2, 3, 4, 5])
    permuted = np.random.permutation(arr)
    print(permuted)  # [3 5 1 2 4]# 生成0-4的随机排列
    permuted = np.random.permutation(5)
    print(permuted)  # [2 4 1 0 3]
    
  • np.random.shuffle(x):原地打乱数组x的顺序(无返回值)。

    arr = np.array([1, 2, 3, 4, 5])
    np.random.shuffle(arr)
    print(arr)  # [5 2 4 1 3]
    

2. 控制随机数的维度与形状

NumPy的随机数生成函数支持通过size参数灵活指定输出数组的形状,无论是一维、二维还是更高维数组,都能轻松生成。

# 生成3维数组(2×3×4)的均匀分布随机数
arr = np.random.rand(2, 3, 4)
print(arr.shape)  # (2, 3, 4)

四、随机数生成的应用场景

1. 数据增强

在机器学习中,为了扩充训练数据、提高模型的泛化能力,常对原始数据进行随机变换,如随机裁剪、随机翻转等,这些操作都依赖于随机数生成。

# 模拟对图像进行随机水平翻转(50%概率)
def random_flip(image):if np.random.rand() > 0.5:return image[:, ::-1]  # 水平翻转return image# 假设image是一个二维图像数组
image = np.array([[1, 2, 3], [4, 5, 6]])
flipped_image = random_flip(image)
print(flipped_image)

2. 蒙特卡洛模拟

蒙特卡洛模拟通过大量随机抽样来求解复杂问题,在金融、物理等领域有广泛应用。例如,用蒙特卡洛方法估算圆周率:

n = 1000000  # 抽样次数
x = np.random.uniform(-1, 1, n)
y = np.random.uniform(-1, 1, n)
# 计算落在单位圆内的点的数量
inside = (x**2 + y**2) <= 1
pi_estimate = 4 * np.sum(inside) / n
print(pi_estimate)  # 约为3.14(随着n增大,精度提高)

3. 随机初始化参数

在机器学习模型训练前,通常需要随机初始化模型参数(如权重矩阵),正态分布和均匀分布是常用的初始化方式。

# 随机初始化一个3×2的权重矩阵(均值0,标准差0.01)
weights = np.random.normal(loc=0, scale=0.01, size=(3, 2))
print(weights)
# 输出:
# [[-0.00463418 -0.00465729]
#  [ 0.01523029  0.00375698]
#  [-0.00634322 -0.00362741]]

五、注意事项

  1. 种子的作用范围np.random.seed()设置的种子只对后续的numpy.random模块函数有效,且在多线程环境中可能会出现种子混乱的问题,此时可使用numpy.random.RandomState创建独立的随机数生成器。

    # 创建独立的随机数生成器
    rng = np.random.RandomState(42)
    print(rng.rand(3))  # [0.37454012 0.95071431 0.73199394]
    
  2. 性能考量:NumPy的随机数生成函数底层由C实现,性能远优于Python原生的random模块,尤其在生成大规模随机数时,优势更为明显。

  3. 分布参数的选择:不同的应用场景需要选择合适的分布。例如,初始化神经网络权重时,常用正态分布或均匀分布;模拟等待时间时,常用指数分布。

That’s all, thanks for reading~~
觉得有用就点个赞、收进收藏夹吧!关注我,获取更多干货~

http://www.dtcms.com/wzjs/258506.html

相关文章:

  • 做p2p网站案例公司排名seo
  • 网络平台推广运营公司seo网站关键词快速排名
  • 全国最好网站建设google推广公司哪家好
  • 专业seo网站优化搜索引擎优化搜索优化
  • 新乡市做网站的公司百度问答app下载
  • 怎样用vps做网站济南全网推广
  • 网络营销策划与推广杭州网站seo推广
  • 多人一起做视频网站seoul什么意思
  • 顶尖网站设计搜外seo
  • html网页制作实验报告泉州seo排名扣费
  • 网站建设服务费口碑营销的产品有哪些
  • 农家乐网站免费模板百度竞价排名名词解释
  • 手机网站cms和业务多一样的平台
  • 网站建设的原则有哪些内容竞价运营是做什么的
  • 宁夏做网站好的公司省委副书记
  • 福州做网站企业谷歌查询关键词的工具叫什么
  • 自己做网站内容读取太慢站长百度
  • 软件开发需求分析模板优化设计高中
  • 服装行业网站模板整站优化关键词排名
  • 网页策划案的范文seo网络优化培训
  • 上海松江区建设局官方网站怎么制作网页设计
  • 海淀做网站的网络公司建筑设计网站
  • 免费企业网站建设百度数据开放平台
  • 上海金山网站建设公司2022近期时事热点素材摘抄
  • 邳州网站制作网站模板下载
  • 建了网站但是百度搜索不到迅雷磁力
  • 关于网站建设调查问卷网推和地推的区别
  • 用wordpress做的网站有哪些东莞今日头条最新消息
  • 那个网站做车险分期搜索量排名
  • 文网站建设费用计入什么科目网站搭建的流程