关于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

发布了9 篇原创文章 · 获赞 9 · 访问量 3983
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览