VC++产生1到100的随机数,我这段程序怎么总是产生同一个随机数?
我要用VC++产生1到100的随机数,我这段程序怎么总是产生同一个随机数?大神帮忙看看哪里出问题了,该怎么改,跪谢!#include<stdio.h>#include<s...
我要用VC++产生1到100的随机数,我这段程序怎么总是产生同一个随机数?大神帮忙看看哪里出问题了,该怎么改,跪谢!
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main () //产生1到100的随机整数//
{
int r,i;
for (i =1;i<10;i++){
srand((unsigned int)time(NULL));
r=1+rand()%100;
printf("%d\n",&r);
}
return r;
} 展开
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main () //产生1到100的随机整数//
{
int r,i;
for (i =1;i<10;i++){
srand((unsigned int)time(NULL));
r=1+rand()%100;
printf("%d\n",&r);
}
return r;
} 展开
2个回答
展开全部
把srand((unsigned int)time(NULL));
放在循环前面,输出部分改为printf("%d\n",r);因为原来你输出的是r的地址,而不是r存储的数字
放在循环前面,输出部分改为printf("%d\n",r);因为原来你输出的是r的地址,而不是r存储的数字
追问
知道啦,谢谢~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
srand只要调用一次。所以不能放在循环里
更多追问追答
追问
可是我放在循环外面也试过了,一样的效果。能不能详细讲讲srang函数?
追答
srand函数是用于初始化随机数列
time返回的时间单位是秒
所以只要你的程序在“秒”变化之前运行完成,那么每次调用srand就是相同的参数送入的
同样的参数初始化出同样的伪随机数列,
既然是同样的数列,那么第一个数(初始化之后第一次调用rand获得的数)就是相同的
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询