关于rand函数的一些使用

问:如何缩放rand函数的返回值?
答:在C中,rand() % 32会产生一个[0, 32)之间的伪随机数,那么rand() % 32 + 1的取值区间实际上是[1, 33)。
       要产生[0, 32)(开区间)之间伪随机数:rand() % 32即可;
       要产生[0, 32](闭区间)之间伪随机数:rand() % 33即可。

                                                                                                                             来自百度知道-----丶誰情深如詩|

问:如何使用rand函数使返回值落在20~90内?

答:return abs(rand())%71+20;
     //abs取绝对值,确保得到正数,rand()%71得到-70到+70之间的整数

     //所以最后得到的范围是 0+20 到70+20的范围的整数

                                                                                                                              来自百度知道-----regret4hxp2

 

问:如何使用rand函数使返回值落在16~59内?

答:rand()%44+16(这里44由59-16+1得到)

                                                                                                                              来自csdn——hanghangde

补充:

int rand(void);

void srand (unsigned int seed);

调用srand函数可以为rand函数提供种子值。若在srand函数之前调用rand函数,那么会把种子值设定为1.每个种子值确定唯一的伪随机序列。srand函数允许用户选择自己想要的序列。

倘若需要每次调用srand函数产生不同的序列,即:使种子值随机化,可调用time函数。调用time函数要注意的是:
srand函数一般要写在for循环外。因为计算机运行很快,几次循环内会得到相同的time值,导致使用同一个种子产生的序列,所以产生的随机数会相同。
 例如:
srand( (unsigned)time( NULL ) ); 
 for(int i=0;i<100000;i++){
 cout<<rand()<<endl;

}


问:如何用rand函数取小数(即0~1之间的浮点数)?

答:rand()是生成一个从0到RAND_MAX的随机数,所以要生成小数,除以RAND_MAX可得到0~1之间的小数:

     x= rand()/(double)(RAND_MAX/1);//变量x为double型。由于RAND_MAX是int型,所以要强制转化为double型。

                                                                //RAND_MAX/10表示0~10之间的浮点数

                                                                 //RAND_MAX/100表示0~100之间的浮点数



问:如何用rand函数取小数(即12~14之间的浮点数)?

答:rand()/(double)(RAND_MAX/3)+12

  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值