为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C
侃侃尔雅 2023-03-04 21:17:55
#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(); }
查看完整描述

3 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

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

查看完整回答
反对 回复 2023-03-08
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

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

查看完整回答
反对 回复 2023-03-08
?
芜湖不芜

TA贡献1796条经验 获得超7个赞

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

查看完整回答
反对 回复 2023-03-08
  • 3 回答
  • 0 关注
  • 84 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信