rnd函数是如何生成随机数的?
请不要复制函数说明给我.. 我想知道的是这个函数体是怎么写的... 比如rnd(-1)=0.224007 我想知道是通过什么表达式产生0.224007这个值的.
随机数每次调用的结果并不一样,你在同一个环境里你会发现第一次运行rnd(X),第二次 运行虽然每次结果不一样,但是每个参数的某次结果都是固定的。比如你那个rnd(-1), 每次第一次调用它结果都是固定的。这个算法(你所说的表达式)因编译器/解释器而异, 一般为了真实达到随机效果都要开启计数,也就是在算法里加上时钟的值这个参数。用法 也是不同的。GCC编译器和微软的编译器采用的就是不同的表达式。 至于负数,谁知道你手头那个编译器是怎么算的。
随机数是一个学问
在内存中随便抓一个地址,当然这个地址是唯一确定的,但这个地址中的值却是不确定的,因此便产生了随机数 在不同的语言中这个地址是不同的。 你可以去看专业书籍,以看更详细的理解。
记得是操作系统原来还是哪本书上关于随机书的产生有专门的论述,里面有很多种方法
unsigned long int next = 1; /* rand: return pseudo-random integer on 0..32767 */ int rand(void) { next = next * 1103515245 + 12345; return (unsigned int)(next/65536) % 32768; } /* srand: set seed for rand() */ void srand(unsigned int seed) { next = seed; } 这是c标准库的实现,vb也差不多,都用的是线性同余算法