什么是伪随机数与真随机数?

来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/19 08:36:30
什么是伪随机数与真随机数?什么是伪随机数与真随机数?什么是伪随机数与真随机数?首先需要声明的是,计算机不会产生绝对随机的随机数,计算机只能产生“伪随机数”.其实绝对随机的随机数只是一种理想的随机数,即

什么是伪随机数与真随机数?
什么是伪随机数与真随机数?

什么是伪随机数与真随机数?
首先需要声明的是,计算机不会产生绝对随机的随机数,计算机只能产生“伪随机数”.其实绝对随机的随机数只是一种理想的随机数,即使计算机怎样发展,它也不会产生一串绝对随机的随机数.计算机只能生成相对的随机数,即伪随机数.
伪随机数并不是假随机数,这里的“伪”是有规律的意思,就是计算机产生的伪随机数既是随机的又是有规律的.怎样理解呢?产生的伪随机数有时遵守一定的规律,有时不遵守任何规律;伪随机数有一部分遵守一定的规律;另一部分不遵守任何规律.比如“世上没有两片形状完全相同的树叶”,这正是点到了事物的特性,即随机性,但是每种树的叶子都有近似的形状,这正是事物的共性,即规律性.从这个角度讲,你大概就会接受这样的事实了:计算机只能产生伪随机数而不能产生绝对随机的随机数.
那么计算机中随机数是怎样产生的呢?有人可能会说,随机数是由“随机种子”产生的.没错,随机种子是用来产生随机数的一个数,在计算机中,这样的一个“随机种子”是一个无符号整形数.那么随机种子是从哪里获得的呢?
下面看这样一个C程序:
//rand01.c
#include
static unsigned int RAND_SEED;
unsigned int random(void)
{
RAND_SEED=(RAND_SEED*123+59)%65536;
return(RAND_SEED);
}
void random_start(void)
{
int temp[2];
movedata(0x0040,0x006c,FP_SEG(temp),FP_OFF(temp),4);
RAND_SEED=temp[0];
}
main()
{
unsigned int i,n;
random_start();
for(i=0;i