赞
踩
有一次用random函数生成随机数,发现每次生成的随机数都一样,于是决定学习为什么会一样。
1.rand()函数
(1)头文件为:#include<stdlib.h>
(2)随机数范围:
假如你想要产生一个10-100之间的随机数那么
int a=rand%91+1
(2)产生随机数时,在调用前都会查询是否调用了srand给种子设置了初值,如果没有调用,那么系统会自动给种子赋初值,并且后面种子值保持不变。
也就是说,如果没有srand函数,而直接调用rand函数,那么每次产生的随机数值相同。
例如下面这中情况:
#include<stdio.h>
#include<stdlib.h>
int main(){
int a;
a=rand();
printf("%d",a);
return 0;
}
2.srand函数
多数情况下,我们希望产生的随机数是不同的,所以需要srand函数来初始化种子,让种子值每次不同,这样一来rand产生的随机数也将不同。
srand((unsigned)time(NULL));
是用时间的不同来作为种子产生的依据,时间每时每刻不同,于是种子也会不同,因此随机数不同。
3.随机数排序(使用冒泡排序)
#include<stdio.h> #include<stdlib.h> #include<time.h> #define MAX 20 void maopao(int array[],int len){//从小到大 int i; int r;//表示第几趟 int temp; for(r=0;r<len;r++){ for(i=0;i<len-1;i++){ if(array[i]>array[i+1]){ temp=array[i]; array[i]=array[i+1]; array[i+1]=temp; } } } printf("\n排序后为:\n"); for(i=0;i<len;i++) printf("%d,",array[i]); } int main(){ srand((unsigned)time(NULL)); int i,n; int a[MAX]; printf("请输入你需要几个数据(不要超过20个):\n"); scanf("%d",&n); for(i=0;i<n;i++){ a[i]=rand()%101+1;//1-100之间的数 } printf("这%d个数分别为:",n); for(i=0;i<n;i++) printf("%d,",a[i]); maopao(a,n); return 0; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。