问:如何缩放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