如何控制亂數的出現範圍呢? /信仁君

文章推薦指數: 80 %
投票人數:10人

如何控制亂數的出現範圍呢? /信仁君. 不管是Fortran、Visual Basic或C/C++等等, 如果要產生0~9 之間的亂數,就是random(10)。

如果要產生1~10 之間的亂數, ... 如何控制亂數的出現範圍呢?/信仁君 不管是Fortran、VisualBasic或C/C++等等, 如果要產生0~9之間的亂數,就是random(10)。

如果要產生1~10之間的亂數,就是random(10)+1。

若不曉得原理的話,只是死記起來,那麼現在想要讓電腦產生兩組亂數群: 分別是讓電腦產生:15~28範圍的任意數, 另外也讓電腦產生:-5~77範圍的任意數。

請問random(X)+Y中,X與Y各是多少呢?如果了解了random()運作的原理,那麼以後照此推理就永遠忘不了。

先說賓果遊戲想要產生1~25的數字,傳給整數變數Set,為什麼要寫成Set=random(25)+1呢?因為random(25)會產生0~24之間的亂數,加上1之後,當然就會產生1~25之間的亂數了。

那為什麼random(25)會產生0~24之間的亂數呢? random(num)本身會傳回整數值,在內部運作時會產生小於1的小數點,然後和傳進來的num相乘,再轉成整數,傳出去給你。

舉個實例如下: Value=random(25)傳給Value的值是多少呢?內部運作是:25xY(0&ltY&lt1) 產生的最小值:25x0.00...001=0.00...025=0(取整數) 產生的最大值:25x0.99...999=24.xxxxxx=24(取整數) 哦!原來0和24是這樣跑出來的呀!因此:Value=random(num)得到的範圍值是: (0&lt=Value&lt=num-1) 而Value=random(num)+d 得到的範圍值是:(d&lt=Value&lt=num–1+d) 於是想要產生15~28之間的亂數計算如下: 已知:d&lt=Value&lt=num-1+d 因此:15&lt=Value&lt=28 所以:d=15    num-1+d=28 於是:num=28-d+1=28-15+1=14 得出:Value=random(14)+15 於是想要產生-5~77之間的亂數計算如下: 已知:d&lt=Value&lt=num-1+d 因此:-5&lt=Value&lt=77 所以:d=-5    num-1+d=77 於是:num=77-d+1=77-(-5)+1=83 得出:Value=random(83)-5 這兩個例子歸納得到想要產生X~Y之間的亂數計算如下: Value=random(Y-X+1)+X 不過請不要強記這個死公式,不然你會忘光光,牢記random(num)函數運作原理,用推的把它推出來,每次我要控制亂數出現的範圍時,都是這樣推出來的。

讀者留言&nbsp&nbsp您的支持與鼓勵才會有更好的作品出來,提供創作者無窮的動力和養分。



請為這篇文章評分?