生产随机数的问题

来源:百度知道 编辑:UC知道 时间:2024/06/30 10:19:15
刚才找过一些文章,说电脑不可能产生真正的随机数!
(我是新手,学过VB,最近在玩一个电脑数字游戏)
我想问的是:
有人说电脑产生的随机数是利用电脑时间做种子
我就想问问,就例如现在是19点33分,我用VB偏的语言让他产生0-10的之间的一个数字,就假设产生的是1,那么下一个19点33分,意思就是说在同一时间,甚至同一秒再运行一次产生的数字还会不会是1?
再用另外一种语言,例如VC C++之类的 也是同一时间所产生的数字会不会和VB产生的数字一样,也是以时间做种子

1:以时间做为种子我经常用(VC)GetTickCount()来取得电脑启动的微秒数.是以微秒为单位的.
2,如果种子相同那么同一个程序产生的数是相同的,不但第一个数相同以后的数都相同.
3.不同编译器使用的算法可能不同,所以不同的编译器(甚至是不是的版本如vc6.0和vc.net 2003)产生的随机数都不一定相同.

所以产生数字一样的条件是:
1,运行在电脑启动的同一微秒数.或最大种子的基数倍(相同的种子)
2,使用相同的随机数算法,最好是同版本的编译器编译出来的程序(相同的算法)