在vc中如何生成小于1000的随机数
解决方案 »
- 玩cad的看下!
- 求助
- 问个菜问题:多行CEdit控件中,如果用ReplaceSel()放置文本时,用SetSel()设置位置,但是要怎样才能得到最后一个字符的位置呢,
- 为何在基于对话框的程序中调用CSocket::Create就出错,在formview里则没问题?
- 冰天雪地跪求一问,CFileDialog的问题
- 为何在2000下可以从PDA上拷贝文件到PC上,而在98下就不行了,附原码
- 非常难的OutLook Automation问题,200分!(http://www.csdn.net/expert/topic/989/989571.xml?temp=.7321131)
- 谁能不用进程介入法截取2000下的星号密码?
- 为什么ATL建的工程无法编辑对话框
- 在DELPHI中,对象可以直接使用,在VC中如何获得这些对象,如何来使用它?
- 开发DLL控件碰到的问题
- 请问“定义:int **a[3][4];分配了多大内存区???”
srand( (unsigned)time( NULL ) );
int i = rand()%1000;
......
int i = rand()%1000;
冯。诺伊曼结构的计算机,其程序的运行都是固定状态的转换,因此不可能凭空产生出每次都不一样的真正的随机数出来,不信你自己想想有什么办法能够不借助一切外界信息让程序每次都产生出一个不一样的数。所以,rand函数采用了从一个初始值开始计算,然后算出一个随机数的方法,这个初始值就叫“随机种子”,而随机数可以看作就是由它“种出来的”。如果不采用srand初始化这个种子,rand函数就默认会使用0作为第一次的随机种子(下次则使用上次的结果)。那么每次程序运行“种出来的”随机数也就相同。而要让种子不相同,最简单的方法之一就是提取程序运行到那一步时的系统时间做随机种子,这就是srand(time(0))的由来。有人或许会问,那为什么不直接使用time(0)的结果做随机数呢,当然不可以,不采用的一个最简单的理由是:即使除整取余,在一个较大的范围内,time(0)是单调递增的,既然单调递增,就不能算是“随机”。在密码学领域,由于随机数有着特殊的重要性,所以也有人做过其他的尝试,如采样键盘被敲击的频率等统计信息来初始化随机种子,采样网络带宽的变化情况来初始化随机种子,等等。