首页 > 其他分享 >random.normalvariate函数

random.normalvariate函数

时间:2024-12-23 13:03:07浏览次数:7  
标签:函数 random normalvariate 生成 mu sigma 正态分布

random.normalvariate 函数

random.normalvariate 是 Python 内置 random 模块中的一个函数,用于从正态分布(高斯分布)中生成随机样本。与 SciPy 提供的 norm.rvs 类似,它是一种高效的采样方法,适合简单的正态分布模拟。


1. 函数定义

random.normalvariate(mu, sigma)
参数说明
  • mu

    • 正态分布的均值(mean),即分布的中心位置。
    • 表示样本数据平均值的期望。
  • sigma

    • 正态分布的标准差(standard deviation),即分布的宽度。
    • 控制数据的离散程度,必须为正数。
返回值
  • 返回一个从指定正态分布中生成的单个随机样本值。

2. 使用示例

示例 1:生成单个正态分布样本
import random

# 从正态分布 (均值=0, 标准差=1) 中生成一个随机样本
sample = random.normalvariate(mu=0, sigma=1)
print(sample)

输出示例:

0.564938293847
示例 2:指定均值和标准差
# 从正态分布 (均值=5, 标准差=2) 中生成一个随机样本
sample = random.normalvariate(mu=5, sigma=2)
print(sample)

输出示例:

6.27392894753
示例 3:生成多个样本

如果需要生成多个样本,可以用循环生成:

# 生成 10 个正态分布随机样本
samples = [random.normalvariate(mu=0, sigma=1) for _ in range(10)]
print(samples)

输出示例:

[0.85, -1.23, 0.56, 0.78, -0.34, 1.67, -0.91, 0.21, -1.56, 0.43]

3. random.normalvariatescipy.stats.norm.rvs 的对比

特性random.normalvariatescipy.stats.norm.rvs
功能用于生成单个正态分布随机样本用于生成单个或多个正态分布随机样本
依赖库Python 内置 random 模块需要安装 SciPy
生成多个样本需用循环生成直接通过 size 参数指定样本数量
随机数种子控制使用 random.seed() 设置种子使用 random_state 或 NumPy 随机生成器
效率对于单个样本速度更快适合生成大批量样本,功能更强大
支持多维样本不支持支持多维样本生成

4. 随机数种子的设置

为确保随机数的可重复性,可以使用 random.seed() 设置随机种子。例如:

import random

# 设置随机种子
random.seed(42)

# 生成两个正态分布样本
sample1 = random.normalvariate(mu=0, sigma=1)
sample2 = random.normalvariate(mu=0, sigma=1)

print(sample1, sample2)

输出示例:

0.4967141530112327 -0.13826430117118466

每次运行都将产生相同的结果。


5. 数学背景:正态分布

正态分布(Normal Distribution)的概率密度函数为:
f ( x ) = 1 2 π σ 2 e − ( x − μ ) 2 2 σ 2 f(x) = \frac{1}{\sqrt{2\pi\sigma^2}} e^{-\frac{(x-\mu)^2}{2\sigma^2}} f(x)=2πσ2 ​1​e−2σ2(x−μ)2​
其中:

  • μ \mu μ 是均值;
  • σ \sigma σ 是标准差。

random.normalvariate 按照这一分布随机生成样本,均值 μ \mu μ 决定了分布的中心位置,标准差 σ \sigma σ 控制分布的扩展范围。


6. 应用场景

  1. 模拟实验数据

    • 用于模拟符合正态分布的实验数据,例如物理测量误差、经济数据波动等。
  2. 蒙特卡罗模拟

    • 在蒙特卡罗方法中,用于从正态分布中采样进行随机模拟。
  3. 机器学习与统计建模

    • 用于初始化参数,或生成训练样本。

7. 总结

random.normalvariate 是一个高效的工具,用于从正态分布中生成单个随机样本,尤其适合简单的统计模拟和实验。相比之下,如果需要生成大批量样本或多维样本,scipy.stats.norm.rvs 更为强大和灵活。对于简单的应用场景,normalvariate 是快速入门的理想选择。

标签:函数,random,normalvariate,生成,mu,sigma,正态分布
From: https://blog.csdn.net/u013172930/article/details/144663322

相关文章

  • c语言读入和输出的函数比较
    背景:随着我们接触越来越多的题目,scanf和printf可能逐渐不够用了,接下来笔者将列举几个常见输入和输出,并比较正文:fscanf和fprintf    //格式化读取和输出这个对我来说还没太多应用就不输入展开,举个简单例子#include<stdio.h>intmain(){FILE*fp;int......
  • 编写程序,求字符串长度(指针专题)。编写一函数len,求一个字符串的长度,注意该长度不计空格
    #include<stdio.h>intlen(char*sp){        intcount=0;        for(inti=0;;i++)        {                  if(*(sp+i)=='')                           continue;  ......
  • 编写程序,利用指针实现排序(指针专题)。将输入的四个整数按由大到小的顺序输出。 已定义
    #include<stdio.h>voidswap(int*pa,int*pb){   intt;   t=*pa;*pa=*pb;*pb=t;}intmain(){   intarr[4]={0};   inti,j,n=4;   for(i=0;i<4;i++)   {       scanf("%d",&arr[i]);   }   ......
  • C++中管理动态内存:析构函数中的`delete`使用指南
    在C++编程中,正确管理动态分配的内存是至关重要的。不当的内存管理可能导致内存泄漏、野指针和重复释放等问题。本文将详细介绍如何在C++类中使用delete和delete[]来释放动态分配的资源,并提供一些最佳实践,以确保资源被安全、有效地管理。1.析构函数中的delete当类的成员变......
  • Python 函数
    一,函数的定义与调用:当你在写程序时,有一个模块一直用的是相同的的代码,所以我们为了提高代码的效率和代码的重用,所以把具有独立的代码块组织为一个小模块,我们把他叫为函数。在Python中,函数是一段可重复使用的代码块,用于执行特定的任务。它通过def关键字来定义函数。defgreet......
  • sock_create 函数
    sock_create函数是Linux内核编程中用于创建套接字(socket)的函数。其实现位于net/socket.c文件中。这个函数的原型如下:intsock_create(intfamily,inttype,intprotocol,structsocket**res);各个参数的含义如下:1.family:指定协议族(protocolfamily),例如AF_INET表......
  • sys_socket函数
    sys_socket是一个在Unix以及类Unix系统中用于创建套接字(socket)的系统调用,它是更高层次的套接字API的基础。通过套接字,程序能够在网络上进行通信。以下是sys_socket函数的一些基本信息和用法:函数原型在Linux系统中,`sys_socket`的函数原型通常定义在内核源码中。它......
  • 函数高级
    闭包就是将数据封装在一个包(区域)中,使用时再去里面取。本质上,闭包是基于函数嵌套搞出来的一种特殊嵌套闭包的应用场景,1:封装数据防止污染全局装饰器点击查看代码importtimeimportfunctoolsdeffunc(a,b):print("执行函数func....")print(f"正在计算{a}+{......
  • Python实例之函数基础打卡篇
    大家晚上好~今日学习之函数打卡。要求:自动打卡定义一个函数,函数名任意,要求调用函数后实现自动打卡;上午打卡时间为8点到9点,下午打卡时间为14点到15点,让用户输入打卡时间,如果时间在8点到9点之间,提示”早上好,打卡成功新的一天“,如果时间在14点到15点之间,提示“下午好,打卡成功不......
  • 橙猫猫论文数据-能同时解析20条函数坐标
    功能介绍仅需两步(上传图片+标记任意两点坐标),即可解析出图片函数中的坐标数据上传图片图片要求图片大小小于5MB一次仅上传一张图片二维直角坐标系什么图片解析效果更好?图片本身分辨率越高,效果越好函数曲线越清晰,效果越好曲线函数解析效果最好,折线函数或直线......