c语言随机生成指定区域的数,C语言生成指定范围内的随机数

1. C语言中有产生随机数据的函数,需要添加stdlib.h与time.h头文件,首先需要在main函数的开头加上srand((unsigned)time(NULL));,这个语句将产生随机数的种子,然后再需要使用随机数的地方使用rand函数,但是rand()函数只能够生成[0,RAND_MAX]范围内的整数,RAND_MAX是stdlib.h头文件中的一个常数(32767),在不同的系统之下这个常数是不一样的,因此想要输出给定范围之内的随机数,需要使用rand() % (b - a + 1)+ a,显然,rand()% (b - a + 1)的范围是[0,b - a],再加上a之后的范围就是[a,b]下面的代码是生成[0,2]和[3,8]范围内的随机数

2. 下面是生成[0,2]和[3,8]范围内具体的代码:

#include#include#includeint main(void){

srand((unsigned)time(NULL));

int i;

for(i = 0; i < 10; ++i){

printf("%d ",rand() % 3);//[0,2]

}

printf("\n");

for(i = 0; i < 10; ++i){

printf("%d ",rand() % 6 + 3);//[3, 8]

}

}

3. 但是上面的做法只能够产生左右端点不超过RAND_MAX的的随机数,如果需要产生更大的数就不行了,我们还有另外一种思路是:

先用rand()生成一个[0,RAND_MAX]范围内的随机数,然后使用这个随机数除以RAND_MAX这样就得到了一个[0,1]范围内的浮点数,我们只需要将这个浮点数乘以(b - a)再加上a即可,相当于浮点数就是[a,b]范围内的比例位置

下面是生成[10000,60000]的10个随机数的具体代码:

#include#include#includeint main(void){

srand((unsigned)time(NULL));

int i = 0;

for(i = 0; i < 10; ++i){

printf("%d ", (int) (round(1.0 * rand() / RAND_MAX * 50000 + 10000)));

}

return 0;

}

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值