均匀分布的随机数---C66x

本文介绍了如何使用C语言中的混合同余法实现均匀分布的随机数生成,通过给定种子值,提供了一个`uniform`函数的详细步骤和代码实例。
摘要由CSDN通过智能技术生成

随机数的产生,是仿真不可缺少的函数,本节是对均匀分布的随机数据进行说明。

通过混合同余法产生均匀分布的随机函数。

x_{i}=\left ( a*{x_{i-1}}+c\right )\left ( mod M \right )

y_{i} = x_{i} / M

a = 2045, c=1, M=2^{20}.

x_{i-1}是随机数的种子(seed),y_{i}表示输出,生成的随机数输出。

1. C 语言的直接实现

double uniform (double in_a, double in_b, int *seed)
{
     const int a = 2045;
     const int c = 1;
     const int M = pow(2, 20);
     double t;

     *seed = a*(*seed)+c;
     *seed = *seed - (*seed/M)*M;

     t = *seed/M;
     t = in_a + (in_a-in_b)*t;

     return t;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值