Rnd
會傳回[0, 1)之間的亂數
因此,我猜fix(Rnd*10)
will return [0,10)的整數亂數2 * (Fix(Rnd * 5) + 1) - 1
will return [1,11)的整數亂數
不能
因為
2 * (Fix(Rnd * 5) + 1) - 1 取的可能亂數為 1,3,5,7,9 其中之一
Fix(Rnd * 10) 取的可能亂數為 0,1,2,3,4,5,6,7,8,9 其中之一
選我正解
好多回答啊,我也來表示我的看法。
首先要了解 Rnd 是什麼,以及 Fix 到底做了什麼。
根據微軟文件的定義 Rnd 是小於 1且大於等於 0,Fix 是無條件捨去。
所以我們可以拆解一下式子。
2 * (Fix(Rnd * 5) + 1) - 1
步驟 | 式子 | 結果 |
---|---|---|
1 | Rnd * 5 | 0 ≦ x < 5 |
2 | Fix(x) | 0,1,2,3,4 |
3 | x + 1 | 1,2,3,4,5 |
4 | 2 * x | 2,4,6,8,10 |
5 | x - 1 | 1,3,5,7,9 |
Fix(Rnd * 10)
步驟 | 式子 | 結果 |
---|---|---|
1 | Rnd * 10 | 0 ≦ x < 10 |
2 | Fix(x) | 0,1,2,3,4,5,6,7,8,9 |
這樣就知道哪邊不一樣了。