c 语言 随机数 常见问题

来源:互联网 发布:哪个软件可以视频剪辑 编辑:程序博客网 时间:2024/06/04 20:04
//c语言-随机数


#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
int i=1;
int r1=rand();
while(i<6)

printf("没设种子r1=%d\n",r1);//伪随机数(不变 41-srand(1))
i++;
}
//播种一次,rand()终身随机-可理解为:一劳永逸 or 终生服务 
srand(time(NULL));//给rand()设置set 种子 


int r2=rand();
i=1;
while(i<5)
{
printf("srand(time(NULL))=%d\n",r2);
r2=rand();//注意该句不可少 
i++;
}
printf("RAND_MAX=%ld\n",RAND_MAX);//在<stdlib.h>中  32767




//产生a~b区间上的随机数-a,b为整数 ,区间步长step==1 
int a,b;
printf("please input a int,a=");
scanf("%d",&a);
getchar();


printf("please input a int,b=");
scanf("%d",&b);
getchar();


int r3=rand()%(b-a+1)+a;
/*
why?
(b-a+1)为[a,b]上元素个数,如[3,5]-个数为3    ---取模 
则rand()%(b-a+1)==0 or 1 or 2 均<3 
加a后   3  4  5
ok!想必聪明的你已经get到了 
*/
printf("output some random numbers>>>\n");
i=1;
while(i<6) 
{
  printf("a num between a and b is %d\n",r3);
  r3=rand()%(b-a+1)+a;
  i++;
}


 
getchar();
return 0;