为什么我编的c++程序用rand得到的结果总是同一个结果,求大神指点

#include"iostream.h"#include"math.h"#include"iomanip.h"#include"stdlib.h"voidmain(){i... #include"iostream.h"
#include"math.h"
#include"iomanip.h"
#include"stdlib.h"
void main()
{
int a,n,i,d;
double c;
n=5+(rand()%6);
a=1+(rand()%9);
d=a;
i=1;
c=0;
for(;i<=n;)
{
c=c+d;
d=d*10+a;
i=i+1;
}
cout<<"Sn="<<c<<endl;
}
展开
 我来答
匿名用户
2014-12-20
展开全部
rand是伪随机数,序列是固定的,所以你每次做出来的随机数看起来都一样。
一般用当前时间作为种子生成随机数,这样就会不一样。
头文件 #include <ctime>
在生成随机数前加一句 srand(unsigned(time(0)));
追问
问题解决了,我还想问下为什么用rand即使电脑无论何时打开该程序甚至重启后得到的数还是相同的
追答
因为rand你如果不设种子的话,他会有一个默认的种子,这个种子是固定的不随时间改变。你设置成时间后才会随时间变化。
关于随机数你可以在搜索一下比较详细的资料,有助于彻底理解。学习嘛
wuiiao333
2014-12-20 · TA获得超过799个赞
知道小有建树答主
回答量:666
采纳率:0%
帮助的人:203万
展开全部
随机数需要一个“种子”。
把种子带入某些公式得到随机数。

一般这个种子是固定的。。。。。。
你试着在rand函数前面使用初始化种子函数。

srand(time(0)); //time在头文件time.h中,把种子定义成系统时间,每秒都在变

目前好像是这样,如果没记错的话。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式