![]() |
|
論壇說明 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
![]() ![]() |
|
主題工具 | 顯示模式 |
![]() |
#1 |
註冊會員
|
![]() 小弟現有的兩本書 對這方面敘述的實在是不夠清楚 一直看不懂所以上來發問一下
為什麼預設的情況下 rand() 是32767 那我要限制他輸出的範圍的話 是使用 rand()%N+1 就會是限定範圍在1~N之間 然後小弟用手算了一下 感覺不太對阿 ="= 還有要產生出0~1之間的浮點亂數 為什麼是 rand()/RAND_MAX 此帖於 2007-12-14 08:27 PM 被 a19870504 編輯. |
![]() |
送花文章: 0,
![]() |
![]() |
#2 (permalink) |
管理版主
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() 對 C/C++ 而言
srand 是類似 "洗牌" 的動作 (攪亂後重排 放入 亂數表列中) srand 函式 有個 引數 "參考值" 簡單講就是告訴 "如何攪亂" 當程式第一次執行 rand 時 得到的值是 亂數表列 的第一個值 之後以此類推 (當程式第二次執行 rand 時,得到的值是 亂數表列 的第二個值...) 如果程式未設計 "一開始用 srand 洗牌" 就相當於 一副新的未拆封的撲克牌 所以其順序是一定的(照理說 全世界新的撲克牌 其開封時 疊放順序都是一樣的) 也就是 每次啟動程式執行時 亂數表都是一樣的 亂數表一樣 執行到 rand 得到的值都會是固定變化的 (可預期) 如果 srand 加上固定的 引數 的話 是否也是會得到 可預期 的值呢? 答案當然是 "Yes" |
![]() |
送花文章: 2044,
![]() |
![]() |
#3 (permalink) |
管理版主
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() 依據一般說明 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) |
![]() |
送花文章: 2044,
![]() |
![]() |
#6 (permalink) |
註冊會員
|
![]() mini你沒講到他要問的問題,我幫你補充好了
要產生出0~1之間的浮點亂數 為什麼是 rand()/RAND_MAX?? 首先要知道的是當n=rand()時,n的範圍為rand能涵蓋的範圍,也就是0~RAND_MAX 為何要產生0~1之間的浮點數要rand()/RAND_MAX的原因是,當RAND_MAX為分母時,其分子rand()最多也只能是RAND_MAX,最少是0 to in short : 0 <= rand() <= RAND_MAX , in the result of "RAND_MAX > 0" so 0/RAND_MAX <= rand()/RAND_MAX <= RAND_MAX/RAND_MAX then 0 <= rand()/RAND_MAX <= 1 |
![]() |
送花文章: 15,
![]() |
向 joebin 送花的會員:
|
![]() ![]() |
|
|
![]() |
||||
主題 | 主題作者 | 討論區 | 回覆 | 最後發表 |
請問大大能否給我譯點通2001或2002裡的Uninst.isu這個檔案嗎 | wwttomax | 一般電腦疑難討論區 | 0 | 2003-04-15 08:44 AM |
請問甚麼軟體可以把一首歌裡的歌聲去掉,只剩下音樂 | Evelyn Liu | 軟體應用問題討論區 | 1 | 2003-03-26 09:46 PM |
請問..我電腦中的這....路徑裡的東西能刪嗎?? | lancolian | 一般電腦疑難討論區 | 3 | 2003-03-02 05:12 PM |
請問如果從電腦裡的檔案夾看出曾經瀏覽的網頁?? | ymcatong | 軟體應用問題討論區 | 2 | 2003-01-23 07:57 PM |
請問vcd裡的dat檔要如何轉檔? | leon7472 | 軟體應用問題討論區 | 2 | 2002-12-07 01:29 AM |