C语言——使用rand()生成两个任意整数间的整数

1.rand()介绍:

  1. rand()是C语言系统函数,用来生成随机数,使用前要包含头文件"stdlib.h"(<stdlib.h>)。
  2. rand()是一个无参函数。

2.rand()的使用:

  1. 单纯调用rand(),会随机生成0~很大一个整数,之间的任意整数。
#include <stdio.h>
#include <stdlib.h>
#define N 10
int main(void){
	int a[N];
	for(int i=0;i<N;++i)
		a[i]=rand();
	for(int i=0;i<N;++i)
		if((i+1)%2==0)
			printf("\ta[%d]=%d\n",i,a[i]);
		else
			printf("\ta[%d]=%d ",i,a[i]);
	system("pause");
}
    a[0]=41         a[1]=18467
    a[2]=6334       a[3]=26500
    a[4]=19169      a[5]=15724
    a[6]=11478      a[7]=29358
    a[8]=26962      a[9]=24464

请按任意键继续. . .

  1. 使用rand()表达式生成指定范围内的随机数:
    rand()%n;表示生成0~n-1的随机整数。
    例如:rand()%10;表示生成0~9的随机整数。

  2. 实现生成10~20的随机整数:

#include <stdio.h>
#include <stdlib.h>
#define N 10
int main(void){
	int a[N];
	for(int i=0;i<N;++i)
		a[i]=10+rand()%11;//利用rand()表达式实现10~20随机整数的生成
	for(int i=0;i<N;++i)
		if((i+1)%2==0)
			printf("\ta[%d]=%d\n",i,a[i]);
		else
			printf("\ta[%d]=%d ",i,a[i]);
	system("pause");
}
    a[0]=18         a[1]=19
    a[2]=19         a[3]=11
    a[4]=17         a[5]=15
    a[6]=15         a[7]=20
    a[8]=11         a[9]=10

请按任意键继续. . .
生成n~m的随机整数的表达式:n+rand()%(m-n+1);(n<m)。

#include <stdio.h>
#include <stdlib.h>
#define N 10
int a[N];
void gen_rand(int n,int m){
	if(n>m){
		n=n+m;
		m=n-m;
		n=n-m;
	}
	for(int i=0;i<N;++i)
		a[i]=n+rand()%(m-n+1);
	for(int i=0;i<N;++i)
		if((i+1)%2==0)
			printf("\ta[%d]=%d\n",i,a[i]);
		else
			printf("\ta[%d]=%d ",i,a[i]);
}
int main(void){
	int n,m;
	printf("input n,m:");
	scanf("%d,%d",&n,&m);
	gen_rand(n,m);
	system("pause");
}

input n,m:34,43
a[0]=35 a[1]=41
a[2]=38 a[3]=34
a[4]=43 a[5]=38
a[6]=42 a[7]=42
a[8]=36 a[9]=38
请按任意键继续…

3.一般使用rand()生成的是伪随机数

  1. rand()实在某个初值(是固定的值)的基础上计算随机数的,所以称为伪随机数。
  2. 改变初值的表达式:srand(time(NULL));time()要包含头文"time.h"(<time.h>)。
  3. 调用time()得到的是当前系统距离1970年1月1日00:00:00的秒数。
  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值