均匀分布的随机数

Posted liam-ji

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了均匀分布的随机数相关的知识,希望对你有一定的参考价值。

一、功能

产生(a, b)区间上均匀分布的随机数。

二、方法简介

均匀分布的概率密度函数为

\[ f(x)=\left\\beginmatrix \frac1b-a & ,a\leq x\leq b\\ 0 & ,others \endmatrix\right. \]

通常用\(u(a, b)\)表示。均匀分布的均值为\(\fraca+b2\),方差为\(\frac(a-b)^212\)

产生均匀分布随机数的方法如下:

首先,由给定的初值\(x_0\),用混合同余法:
\[ \left\\beginmatrix x_i &=(ax_i-1+c)(mod \ M)\\ y_i &=x_i/M \endmatrix\right. \]
产生(0, 1)区间上的随机数\(y_i\)。其中:a=2045,c=1,M=2^20;然后,通过变换\(z_i=a+(b-a)y_i\)产生(a,b)区间上的随机数\(z_i\)

三、使用说明

生成(a,b)区间上均匀分布随机数的C函数:

/************************************
    a       ---给定区间下限
    b       ---给定区间上限
    seed    ---随机数种子
************************************/
double uniform(double a, double b, long int *seed)

    double t;
    *seed = 2045 * (*seed) + 1;
    *seed = *seed - (*seed / 1048576);
    t = (*seed) / 1048576.0;
    t = a + (b - a) * t;
    return(t);

以上是关于均匀分布的随机数的主要内容,如果未能解决你的问题,请参考以下文章

Windows批处理中随机数的均匀分布

如何在 VS 2010 中生成均匀分布的随机数?

用具有不同范围的均匀分布的随机数填充多维矩阵

用均匀分布随机变量生成泊松分布随机变量

均匀分布映射到任意分布

单位半球表面上快速均匀分布的随机点