亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么不加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 關注
  • 112 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號