int RandInt(int a, int b){
return (rand()%b+a);
}
我想,所以我這樣稱呼它使用rand()函數生成的ASCII值
char asciiValue = RandInt(65, 90);
生成隨機字符值,但我的輸出是不太我所期望的......上午我做錯了什麼?
--edit放錯值randint電話,是我不好
int RandInt(int a, int b){
return (rand()%b+a);
}
我想,所以我這樣稱呼它使用rand()函數生成的ASCII值
char asciiValue = RandInt(65, 90);
生成隨機字符值,但我的輸出是不太我所期望的......上午我做錯了什麼?
--edit放錯值randint電話,是我不好
RandInt(90, 90)
將返回90和179的值90表示一個「Z」,你可以有一個值從那裏之間的整數。
你打算得到什麼樣的範圍?
大寫字母將是RandInt(65, 26)
。這是你期望的嗎?
如果您修改RandInt(low, high)
函數以返回低位和高位(含)之間的隨機數字可能會更好。
int RandInt(int low, int high) {
return low + rand() % (high - low + 1);
}
這樣,得到一個小寫字符將是非常簡單的:
const char c = RandInt('a', 'z');
蘭德是一個隨機數發生器週期爲2的32次冪從0範圍返回連續僞隨機數到RAND_MAX。
如果您在rand()%b + a之前使用randomize(),則每次編譯代碼時輸出都會有所不同,因爲randomize()會將隨機數發生器用隨機值初始化。
而當你傳遞randint(65,90)時,每次你都會得到一個符號作爲輸出。
什麼是真正在這裏做的是
1)蘭特()%B
這裏RAND()會產生一個隨機數是90 0之間,你正在傳遞的價值爲90 。
2)然後它會在這裏添加一個ie 65的值。您傳遞的值。
然後,無論計算出的值被發現,它將輸出到屏幕上。
這會對您有所幫助。
如果不是您期望的結果,那麼您的輸出是什麼? – Jasper 2010-08-25 22:20:17
大部分輸出是ascii值,即時獲取數字,如106,102,91是未知字符 – fxmle 2010-08-25 22:27:21
可能重複的[rand()for C++ with variables ...](http://stackoverflow.com/questions/2982369 /蘭特換-C-與變量) – 2010-08-26 00:29:53