为什么不加getRand的话第一个输出一直是定值?

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
float getRand() 
{
return rand() / (RAND_MAX+1.0);
}
int rollDie(int x)
{
return getRand()*x+1;  
}  

int main()
{

srand(time(NULL));
getRand() 这里!!!!!
int value = 0;  
value = rollDie(6);
printf("6-sided die: %i\n", value);
value = rollDie(20);
printf("20-sided die: %i\n", value);
getchar(); 
}

侃侃尔雅
浏览 86回答 3
3回答

30秒到达战场

getRand();可以不加,但srand(time(NULL));必须加,以初始化随机数种子。否则,每次rand()函数都会生成相同的随机数序列。

胡子哥哥

float getRand(){return rand() / (RAND_MAX+1.0);}方法是随机获取[0,0.1)的随机数

芜湖不芜

getRand()函数其实就是给rand()函数加了一个壳,把生成的随机数换算为一个真小数。rand()函数在使用之前要先通过srand()函数来变更随机数种子,否则每次调用rand()函数都使用同一个种子、生成同一个随机数。所以getRand()函数可以改为:float getRand(){srand(time(0)); // 用当前时间作为随机数种子return rand()/(RAND_MAX+1.0);}
打开App,查看更多内容
随时随地看视频慕课网APP