查看單個文章
舊 2007-12-14, 08:56 PM   #3 (permalink)
mini
管理版主
 
mini 的頭像
榮譽勳章
UID - 4144
在線等級: 級別:96 | 在線時長:9693小時 | 升級還需:104小時級別:96 | 在線時長:9693小時 | 升級還需:104小時級別:96 | 在線時長:9693小時 | 升級還需:104小時級別:96 | 在線時長:9693小時 | 升級還需:104小時級別:96 | 在線時長:9693小時 | 升級還需:104小時級別:96 | 在線時長:9693小時 | 升級還需:104小時
註冊日期: 2002-12-07
文章: 13261
精華: 0
現金: 26261 金幣
資產: 3024071 金幣
預設

引用:
作者: a19870504 查看文章
我要限制他輸出的範圍的話 是使用 rand()%N+1 就會是限定範圍在1~N之間
然後小弟用手算了一下 感覺不太對阿 ="=
依據一般說明 rand() 會產生0~32767之間的亂數

打開 stdlib.h 可以找到其原形
int rand(void)

C/C++ 的 int 整數使用 4個byte紀錄
範圍是
int 2147483647 ~ -2147483648

所以證明
不一定最大值是 32767 (不同版本甚至編譯器 都可能有不同結果)


回到你說 感覺不太對阿
應該是沒有問題的啊
100 取 N 的餘數
範圍是在 0 ~ N-1
所以+1 的話
範圍就變成 1 ~ N

一個得到字元的範圍之應用
(char)(rand()%26 +65); //轉成英文字母 (A~Z)
(char)(rand()%10 +48); //轉成阿拉伯數字 (0~9)
mini 目前離線  
送花文章: 2001, 收花文章: 7962 篇, 收花: 26757 次
回覆時引用此帖