您的位置:C++老鼠窝编程 新闻公告 正文
原作者:网摘 添加时间:2008-06-20 原文发表时间:2008-06-20 人气:37


 

问题:
你可能知道rand()返回的是虚假的随机数.默认的种子是1.你可以通过srand()来改变它.但是调用srand()就意味着你已经得到了随机数?下面的代码看上去是得到一个随机数,但是事实并非如此:

#include <stdlib.h> /* header for rand() and srand() */

#include <stdio.h> /* io header */

int main()

{

srand(rand());

for(int i=0;i<=9;i )

printf("%d\n",rand());

return 0;

}

每运行一次,其输出都是一个结果,您可以测试一下.也就是说要是程序在每次启动需要不同的随机数,这个方法是不可行的.如何来解决?

上面提及的srand()可以改变种子的值.但是如果你将它设为常量,那么随机数列也就是常量.可以用srand(time(0))来解决.time()返回一个time_t.你可以认为它是一个整型(int),并且值是不同的.那么,我们现在可以这么写代码来实现要求:

#include <stdlib.h> /* header for rand() and srand() */

#include <stdio.h> /* io header */

#include <time.h> /* header needed for time() */

int main()

{

srand(time(0));

for(int i=0;i<=9;i )

printf("%d\n",rand());

return 0;

}

现在是真正的随机数了,try it yourself.
本页地址
相关文章

如何禁止对话框关闭按钮和浮动工具条上的系
如何等比例缩放图像
用MFC和ClassWizard子类化Window的通用对话
作为对象的函数指针
在Direct3D中创建暗灯特效
避免在ATL中引发的不明确接口问题
调试ATL组件中的引用计数问题
用注册表键存储用户程序的信息
用ATL的注册器来定制注册表入口
如何激活和关闭IE浏览器
如何在vc中制作256色的16x16和32x32大小的彩
vc如何得到视图View指针?
如何让自定义的基于CStatic的Static控件响应
MFC用CZip/CUnzip类压缩/解压缩文件
怎样设置应用程序窗口的大小
CListBox编程中LBS_OWNERDRAWFIXED式样设置
如何在MFC中判断EOF
调试动态链接库的小技巧
如何得到拨号上网时的网络速度(之一)
如何得到拨号上网时的网络速度(之二)

相关评论


本文章所属分类:首页 新闻公告