随机函数

随机函数1

当我们要实现几个不同的随机数时可以用rand()函数,但这种实现不是绝对,只是尽可能都不同。rand()函数包含在sdlib.h这个头文件中。

下面给个实例,求随机产生10个不同的数?

#include <stdio.h>
#include <stdlib.h>
void main()
{
	for(int i=0; i<10; i++)
	{
		printf("%d  ", rand());
	}
}

随机函数2

或许我们想实现的随机数是有范围的,我们就可以用(rand()%(b-a))+a,这里的区间取值范围是[a,b),结果值是包含a不包含b。如果a0可以简写为rand()%b

下面给个实例,求随机产生10个在区间[10,99)的整数?

#include <stdio.h>
#include <stdlib.h>
void main()
{
	for(int i=0; i<10; i++)
	{
		printf("%d ", (rand()%(99-10))+10);
	}
}

随机函数3

我们也可以通过宏定义的方式来实现

下面给个实例,求随机产生10个在区间[0,10)的整数?

#include <stdio.h>
#include <stdlib.h>
#define random(x)  (rand()%x)
void main()
{
	for(int i=0; i<10; i++)
	{
		printf("%d ",random(10));
	}
}

这里总感觉只能实现以0为下限的区间,其实我们也可以定义复杂一点的

下面给个实例,求求随机产生10个在区间[10,99)的整数?

#include <stdio.h>
#include <stdlib.h>
#define random(a,b)  (rand()%(b-a)+a)
void main()
{
	for(int i=0; i<10; i++)
	{
		printf("%d ",random(10,20));
	}
}

只不过稍微做了一些变化,这里就不再多介绍宏的定义了

前面有三个随机函数,当我们发现每次运行那个程序随机产生的结果都跟上次的一样,那我们就得用srand()设置种子来产生随机数,在调用rand ()函数之前都得设置好种子,还有注意的是srand()函数一般不放在循环中

srand()函数的设置可以有多种形式:

srand((unsigned int)time(NULL)); 

srand((unsigned int)time(0)); 

srand((int)time(NULL)); 

srand(((int)time(NULL))*10);

我们目前只要知道为了避免下一次运行程序时不会产生相同的结果,我们得先设置种子



#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define random(a,b)  (rand()%(b-a)+a)
void main()
{
	srand((int)time(0));
	for(int i=0; i<10; i++)
	{
		printf("%d ",random(10,20));
	}
}


这段程序添加了srand((int)time(0));和#include <time.h>因为我们用到了time()函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值