2014-10-22 64 views
0

我做了一個小隨機數發生器,它不能正常工作。下面的代碼...隨機數發生器不能正常工作

我有一個函數,

short rnd(short *num){ 
    return (rand() % max) + 1; 
} 

具有原型的

short rnd(short *num); 

當我用這個,我做這樣的事情:

max = 10; 
num = rnd(&max); 

編譯器拋出沒有問題,但它總是等於0 ... 有什麼建議嗎?

+5

之間的隨機數'max'必須爲代碼編譯一個全局變量。你的意思是'* num'而不是'max'?另外,如果你不分配給'* num',爲什麼你將它作爲指針傳遞? – 2014-10-22 00:38:03

+0

這是,對不起。它在包含的頭文件中... – 2014-10-22 00:39:29

+0

同意Jonathan以及爲什麼使用指針? – ForguesR 2014-10-22 00:39:50

回答

4

首先看起來你的max是一個全局變量。我建議把它傳遞給你的RND函數作爲參數,而不是使其成爲全球性的,如果它在運行時不改變只是創建一個宏爲您max和傳遞英寸

short rnd(unsigned short max) 
{ 
    return (rand() % max) + 1; 
} 
0

爲了有一個真正的隨機數,它需要種子。種子的最好方法是使用標準庫中srand()的計算機時間。

#include <stdlib.h> 
#include <time.h> 
srand(time(NULL)); /*this in the main function*/ 

short rndnum(short max) 
{ 
    return (short) (rand() % max) + 1; 
} 

這應該產生1和10