均匀分布随机数产生的程序

转载 2006年05月28日 21:07:00

        该程序在我的机器上生成10万以内效果很好。如果需要更大的随机数,只要把程序中# define Times 50的50改大,当然运行时间就会更长了。

/* 
程序名:SJS.C
功能:生成一个随机数
命令格式: SJS  下限  上限
输出:一个均匀分布的随机数和次数
操作系统:DOS、WINDOWS
编译器:DOS下的C语言编译器,如TC等
*/

# include <stdio.h>
# define Times 50  /*  时钟计数器到下一个Times的倍数时,计数停止 */
void main(int n,char *v[])
{
int flag1,flag2;
long min,max,k,m,t,max0,max1,t1;
long tmp;      /*  临时变量  */
long far *time0;
if(n!=3)
{
puts("SJS  下限  上限"); 
return;
}
sscanf(v[1],"%ld",&min);  /*  下限  */
sscanf(v[2],"%ld",&max);  /*  上限  */
time0 = (long far *) 0x0000046c;  /* 时钟计数器的地址  */
k = 0;
m=0;
max0 = max -min;  /* 2倍长度,数字从最小数到最大,再从最大数到最小 */
max1=max0+max0;
t = *time0;  /* 起始时间 */

while(1)
{
t1=*time0;  /* 当前时间 */
flag1=(t != t1);
flag2=(t1 % Times == 0);
if(flag1 && flag2)
break;
k++;
if(k > max1)
{
k=0;
m++;  /*  数完了m次 */
}
else
{
tmp=0;
tmp++; /*  为了和k > max1的计算时间相同,也写两个没用的操作  */
}
}
if(k>max0)
k = max1 - k;  /* 从min数到max,再从max数回min */
printf("随机数是:%ld,共数了%ld遍/n",min+k,m);  
/* 如果试了几次,m没超过1, 则需要把Times改大些 */
}

C++中如何产生均匀分布的随机数

产生均匀分布的随机数:        上面例子产生的随机数会比较大,如果我们只想产生0到100的随机数。按照我们之前的做法是直接random()%100。这种做法是不好的。原因可以参见《Acce...
  • wsf0001
  • wsf0001
  • 2015年12月24日 10:32
  • 4629

使用均匀分布随机数产生器构造任意分布的随机数产生器

使用均匀分布随机数产生器构造任意分布的随机数产生器
  • shengno1
  • shengno1
  • 2015年08月16日 12:46
  • 2316

均匀分布随机数的生成算法简介

均匀分布随机数,线性同余法,反馈位寄存器法,组合随机数发生器
  • lidbcode
  • lidbcode
  • 2017年11月17日 14:43
  • 6426

C++实现生成均匀分布的数字

问题描述: 生成[a,b]之间均匀分布的数字!
  • ljp1919
  • ljp1919
  • 2015年01月06日 21:10
  • 3329

C语言与数字信号处理——均匀分布的随机数

分别用C语言和matlab语言生成随机数,并对比概率密度估计。
  • wzz4420381
  • wzz4420381
  • 2017年04月22日 20:45
  • 857

【算法分析】随机数的生成:均匀分布、正态、泊松 、瑞利

不使用系统提供的随机数,利用其它算法产生。
  • hujingshuang
  • hujingshuang
  • 2015年11月06日 10:48
  • 2637

C++均匀分布U(0,1)的随机数

这里来继续探讨C++中的随机数生成问题,这里主要探讨一下均匀分布的生成,均匀分布是可以说是其他的随机生成的基础,同时要注意的这也是一个世界难题,所以实际中使用的均匀分布U(0,1)跟C++ 中的ran...
  • u010842413
  • u010842413
  • 2014年03月16日 09:33
  • 3082

如何生成均匀分布随机整数

前几天在水木上看到一个帖子,问如何用硬件实现一个0-56的随机数。这个问题初看起来不是很难,但是仔细想想还是蛮难实现的,尤其是希望能够尽量少的占用芯片面积时。 由这个问题,我想到另外一个稍微简单一些...
  • liyuanbhu
  • liyuanbhu
  • 2013年03月03日 14:24
  • 10225

生成伪随机数的算法–线性同余法

现在的随机函数发生器大都采用的是线性同余法。   同余的概念是这样描述的: 设m是一个给定的正整数,如果两个整数a,b用m除,所得的余数相同,则称a,b对模m同余。 所谓线性同余法(又叫混合同...
  • myself_helper
  • myself_helper
  • 2013年03月19日 23:03
  • 5030

c++/c 产生随机数(平均分布)

计算机的随机数都是由伪随机数,即是由小M多项式序列生成的,其中产生每个小序列都有一个初始值,即随机种子。(注意: 小M多项式序列的周期是65535,即每次利用一个随机种子生成的随机数的周期是65535...
  • u010962810
  • u010962810
  • 2013年11月27日 20:26
  • 1714
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:均匀分布随机数产生的程序
举报原因:
原因补充:

(最多只允许输入30个字)