C语言随机数函数学习和随机数排序

有一次用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;
}

a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值