#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()函數都會生成相同的隨機數序列。

蕪湖不蕪
TA貢獻1796條經驗 獲得超7個贊
getRand()函數其實就是給rand()函數加了一個殼,把生成的隨機數換算為一個真小數。
rand()函數在使用之前要先通過srand()函數來變更隨機數種子,否則每次調用rand()函數都使用同一個種子、生成同一個隨機數。
所以getRand()函數可以改為:
float getRand()
{
srand(time(0)); // 用當前時間作為隨機數種子
return rand()/(RAND_MAX+1.0);
}
- 3 回答
- 0 關注
- 112 瀏覽
添加回答
舉報
0/150
提交
取消