正态分布的随机数发生器 in C#

C#Random得随机数求均值、方差、正态分布 06年遥感上机复试的程序:请用VC或C编写以下程序:正态分布随机数的产生。步骤如下:(1)利用随机函数rand()生成(0,1)区间的100个均匀分布随机数;提示:首先利用“srand((unsigned)time(NULL)) ”语句设置产生随机数的开始点(需要包含time.h头文件);产生随机数的函数为rand(),为了将该随机数转换为(0,1)范围内的数,利用“rand()* 阅读详情

主要参考《Numerical Recipes in C++ 2/e》p.292~p.294 和《Simulation Modeling and Analysis 3/e》p.465~p.466。

Box 和 Muller 在 1958 年给出了由均匀分布的随机变量生成正态分布的随机变量的算法。设 U1, U2 是区间 (0, 1) 上均匀分布的随机变量,且相互独立。令

X1 = sqrt(-2*log(U1)) * cos(2*PI*U2);
X2 = sqrt(-2*log(U1)) * sin(2*PI*U2);


那么 X1, X2 服从 N(0,1) 分布,且相互独立。等于说我们用两个独立的 U(0,1) 随机数得到了两个独立的 N(0,1)随机数。

Marsaglia 和 Bray 在 1964 年提出了一种改进算法,避免使用三角函数。以下的实现代码用的就是这种改进算法。



// 
// Gaussian Random Number Generator class
// ref. ``Numerical Recipes in C++ 2/e'', p.293 ~ p.294
//
  public class GaussianRNG
  {
    int iset;
    double gset;
    Random r1, r2;
   
    public GaussianRNG()
    {
      r1 = new Random(unchecked((int)DateTime.Now.Ticks));
      r2 = new Random(~unchecked((int)DateTime.Now.Ticks));
      iset = 0;
    }
   
    public double Next()
    {
      double fac, rsq, v1, v2;   
      if (iset == 0) {
        do {
          v1 = 2.0 * r1.NextDouble() - 1.0;
          v2 = 2.0 * r2.NextDouble() - 1.0;
          rsq = v1*v1 + v2*v2;
        } while (rsq >= 1.0 || rsq == 0.0);
       
        fac = Math.Sqrt(-2.0*Math.Log(rsq)/rsq);
        gset = v1*fac;
        iset = 1;
        return v2*fac;
      } else {
        iset = 0;
        return gset;
      }
    }
  }

C#实现对数正态分布随机数的蒙特卡罗算法 上述代码是一个简单的C#类,其中包括一个构造函数和一个方法。GenerateLogNormal方法生成一个对数正态分布的随机数,该方法采用均值和标准偏差作为参数。这就是C#中实现对数正态分布的随机数生成的基本方法。通过这种方法,我们可以在计算机程序中生成对数正态分布的随机变量,达到科学和工程应用的目的。首先,需要在程序中定义一个名为“RandomGenerator”的类,该类实现了蒙特卡罗算法。运行程序,可以看到输出的10个随机数都服从对数正态分布,均值为5,标准偏差为1。 阅读详情

相关推荐

C#:实现蒙特卡罗(对数正态分布的随机数的产生)算法(附完整源码)

C#:实现蒙特卡罗(对数正态分布的随机数的产生)算法(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 718

C#生成符合正态分布的随机数并绘制图形

1.效果图                   2.源码比较简单直接贴了 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System....

qq_39477038的博客 7856

c# 正态分布代码

以前项目中有关于正态分布的代码,希望大家能用得到

【工程C#】随机数扩展类(新增正态分布、随机数批量生成)

//随机数类 public static class RandomEX { public static double Seed; public static int NormSumCount = 12; const double s = 65536; const double u = 2053; ...

hanbaoyi192的专栏 563

AXI4-Stream FIFO IP核实战指南——从配置到跨时钟域处理

本文是AXI4-Stream FIFO IP核的实战指南,详细讲解了其作为数据流缓冲核心的作用。文章重点涵盖从Vivado环境下的IP核配置、关键参数(如深度与宽度)设定,到跨时钟域处理的完整流程。深入解析了TVALID/TREADY握手协议及TLAST等信号,并提供了常见问题排查与调试技巧,帮助开发者高效实现FPGA/SoC系统中可靠的数据流缓冲与同步。

weixin_29251567的博客 480

在win10-wsl2(ubuntu)中安装jlink

在 官方下载linux版本的deb包拷贝到ubuntu的/home目录下(其他目录也可以),进行安装然后提示很多依赖缺失的错误,此时执行自动安装需要的依赖包再次重新安装就可以啦查看是否安装成功,输入JLink 再按下两次Table键,是否如下所示这样表示安装成功了。

yaq_30401的博客 3140

正态分布的随机数发生器 in C#[转]

主要参考《Numerical Recipes in C++ 2/e》p.292~p.294 和《Simulation Modeling and Analysis 3/e》p.465~p.466。 Box 和 Muller 在 1958 年给出了由均匀分布的随机变量生成正态分布的随机变量的算法。设 U1, U2 是区间 (0, 1) 上均匀分布的随机变量,且相互独立。令X1 = sqrt...

weixin_30896763的博客 230

Python实战:用MNE-Python从脑电数据中提取P300成分(附完整代码)

本文提供了一份使用MNE-Python从脑电数据中提取P300成分的完整实战指南。通过详细的代码示例,系统讲解了从环境搭建、数据加载、预处理(滤波、分段、伪迹剔除)到P300波形提取、可视化与参数量化的全流程。重点介绍了如何利用零相位滤波和叠加平均技术,从EEG信号中精准分离出反映认知加工的P300事件相关电位,适用于脑机接口与认知神经科学研究。

weixin_29240343的博客 338
上一篇: SystemC 初始化步骤
下一篇: 支付每个勘误 2.56$ 会花 Knuth 多少钱?
陈硕
博客等级 码龄26年 1万+粉丝 144原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值