C语言程序设计产生随机数

来源:百度知道 编辑:UC知道 时间:2024/05/30 23:53:13
产生随机数
要求:
(1)满足均匀分布的[M,N]区间随机数,其中M,N是正整数。
(2) 满足指数分布的[M,N]区间随机数,其中M,N是正整数。

将答案发到我的百度留言,我会加分的!!!!!!!!!!!!!!!!!
高手请进,菜了的莫进!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
我要具体的程序和说明,麻烦大家了!!!!!!!!!!!!!!!!!!!!
高手们请进吧,救救!!!!!!!

我这里给出M,N是double 的通用程序。(m < n ).
随机数也是double,你若要整数自己取整。
指数分布,假定指数分布函数曲线是:
f(x)=LAM * exp(-LAM*x);
LAM 是 指数分布函数 参数。你要自己给定,我这里给了1.2。

#include <stdio.h>
#include <stdlib.h>
#include <time.h> // 别忘了 要 time.h
#include <math.h> // 别忘了 要 math.h

// 均匀分布的随机数
double rd_MN1(double m,double n)
{
double r;
if (m>n) {r=n;n=m;m=r;};
r = ( (double)rand() / ((double)(RAND_MAX)+(double)(1)) );
r = m + r * (n-m);
return r;
}

void main()
{
long int i,k;
double m,n;
double x, r;
double y;
double LAM=1.2; //f(x)=LAM*exp(-LAM*x);

m=2.0; n=5.0;

srand((unsigned)time(NULL)); // 随机种子
for (i=0;i<50;i++)
printf("%lf ", rd_MN1(m,n));
printf("\n==========\n");

srand((unsigned)time(NULL));
k=0;
loop:
r = ( (double)rand() / ((double)(RAND_MA