2010-08-25 98 views
0
int RandInt(int a, int b){ 
    return (rand()%b+a); 
} 

我想,所以我這樣稱呼它使用rand()函數生成的ASCII值

char asciiValue = RandInt(65, 90); 

生成隨機字符值,但我的輸出是不太我所期望的......上午我做錯了什麼?

--edit放錯值randint電話,是我不好

+2

如果不是您期望的結果,那麼您的輸出是什麼? – Jasper 2010-08-25 22:20:17

+0

大部分輸出是ascii值,即時獲取數字,如106,102,91是未知字符 – fxmle 2010-08-25 22:27:21

+0

可能重複的[rand()for C++ with variables ...](http://stackoverflow.com/questions/2982369 /蘭特換-C-與變量) – 2010-08-26 00:29:53

回答

2

RandInt(90, 90)將返回90和179的值90表示一個「Z」,你可以有一個值從那裏之間的整數。

你打算得到什麼樣的範圍?

大寫字母將是RandInt(65, 26)。這是你期望的嗎?

6

如果您修改RandInt(low, high)函數以返回低位和高位(含)之間的隨機數字可能會更好。

int RandInt(int low, int high) { 
    return low + rand() % (high - low + 1); 
} 

這樣,得到一個小寫字符將是非常簡單的:

const char c = RandInt('a', 'z'); 
2

蘭德是一個隨機數發生器週期爲2的32次冪從0範圍返回連續僞隨機數到RAND_MAX。

如果您在rand()%b + a之前使用randomize(),則每次編譯代碼時輸出都會有所不同,因爲randomize()會將隨機數發生器用隨機值初始化。

而當你傳遞randint(65,90)時,每次你都會得到一個符號作爲輸出。

什麼是真正在這裏做的是

1)蘭特()%B

這裏RAND()會產生一個隨機數是90 0之間,你正在傳遞的價值爲90 。

2)然後它會在這裏添加一個ie 65的值。您傳遞的值。

然後,無論計算出的值被發現,它將輸出到屏幕上。

這會對您有所幫助。