基 礎(chǔ) 函 數(shù) 參 考
Random
產(chǎn)生浮點(diǎn)型偽隨機(jī)數(shù).
參 數(shù)
最小值 |
[可選參數(shù)] 隨機(jī)數(shù)的最小值,默認(rèn)為 0. |
最大值 |
[可選參數(shù)] 隨機(jī)數(shù)的最大值,默認(rèn)為 1. |
標(biāo)志 |
[可選參數(shù)] 設(shè)為 1, 則返回整數(shù),默認(rèn)返回浮點(diǎn)數(shù). |
返 回 值
成功: |
返回最小值與最大值之間的偽隨機(jī)數(shù). |
失敗: |
返回 0, 設(shè)置 @error 為非 0 值. |
備 注
默認(rèn)隨機(jī)函數(shù)工作于十進(jìn)制/浮點(diǎn)數(shù). 如果需要整數(shù), 則將標(biāo)志參數(shù)設(shè)為 1.
如果只提供一個(gè)參數(shù), 則它解釋為最大值.
其結(jié)果在取整數(shù)時(shí), 返回值在最小值及最大值之間, 包含最小, 最大值(取浮點(diǎn)數(shù)時(shí)可以缺少"最大值"參數(shù)).
如果最小和最大值是相同的, 則隨機(jī)將返回 0, 并設(shè)置 @error 為非零值.
當(dāng)使用整數(shù)時(shí), 最大-最小必須小于 2^31.
關(guān)于源型的說(shuō)明
函數(shù)使用 Mersenne Twister 的 MT19937 隨機(jī)數(shù)發(fā)生器,
由 Takuji Nishimura, Makoto Matsumoto, Shawn Cokus, Matthe Bellew 與
Isaku Wada 編寫(xiě).
Mersenne Twister 算法用于生成隨機(jī)數(shù). 設(shè)計(jì)考慮了其它各種發(fā)生器的缺點(diǎn).
周期為 219937-1, 而且在 623 維空間上的分布是均勻的.
產(chǎn)生隨機(jī)數(shù)的速度也挺快; 它避免了乘法和除法的使用, 同時(shí)還很好地利用了緩沖和管道.
詳細(xì)說(shuō)明請(qǐng)查看算法作者的網(wǎng)頁(yè)
http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html
版權(quán) (C) 1997 - 2002, Makoto Matsumoto 與 Takuji Nishimura 保留所有版權(quán).
如果滿足以下條件, 則允許以源代碼格式或二進(jìn)制格式, 經(jīng)過(guò)修改或不經(jīng)修改, 進(jìn)行再分發(fā)和使用:
1. 再分發(fā)源代碼時(shí),必須保留上述版權(quán)說(shuō)明,此條件列表和以下免責(zé)聲明.
2. 以二進(jìn)制格式再分發(fā)必須在文檔和/或隨分發(fā)版本一起提供的其他資料中復(fù)制上述版權(quán)說(shuō)明, 此條件列表和以下免責(zé)聲明.
3. 沒(méi)有專門(mén)的事先書(shū)面許可,不得用貢獻(xiàn)者的姓名來(lái)簽署或宣傳由此軟件衍生的產(chǎn)品.
此軟件由版權(quán)擁有者和貢獻(xiàn)者"照原樣"提供. 對(duì)于任何明示或暗示的擔(dān)保, 包括但不限于對(duì)商業(yè)可行性, 針對(duì)特定用途的適用性的暗示擔(dān)保,
我們均不負(fù)責(zé).
對(duì)于任何直接,間接,偶然,特別,典型或因果性損壞(包括但不限于替代商品或服務(wù)的獲得; 用法, 數(shù)據(jù)或利潤(rùn)的丟失;或業(yè)務(wù)中斷),
無(wú)論起因是什么, 無(wú)論根據(jù)任何責(zé)任理論, 無(wú)論是否在合同中有嚴(yán)格賠償責(zé)任, 版權(quán)所有者及其貢獻(xiàn)者均一概不負(fù)責(zé).
對(duì)于由于使用此軟件, 而以任何形式出現(xiàn)的民事侵權(quán)行為(包括疏忽或其他形式), 版權(quán)所有者及其貢獻(xiàn)者均一概不負(fù)責(zé).
即使被告知了這種損壞的可能性,也是如此.
相 關(guān) 函 數(shù)
Round, SRandom
函 數(shù) 示 例
;硬幣翻轉(zhuǎn)
Local $Msg
If Random() < 0.5 Then ; 返回 0 到 1 之間的數(shù)值.
$Msg
= "正面朝上. 贏了
50%"
Else
$Msg
= "背面朝上. 輸了
50%"
EndIf
MsgBox(0, "投擲硬幣", $Msg)
;模型滾動(dòng)
MsgBox(0, "模型滾動(dòng)", "你投擲:
" & Random(1, 6, 1))
Local $StockPrice
= 98
;摹擬股票市場(chǎng)博弈
Local $StockPriceChange =
Random(-10,
10, 1) ;
產(chǎn)生一個(gè)-10到10之間的整數(shù)
$StockPrice =
$StockPrice +
$StockPriceChange
If $StockPriceChange <
0 Then
MsgBox(4096, "存貨變化", "您的股票下跌到到 $" & $StockPrice)
ElseIf $StockPriceChange >
0 Then
MsgBox(4096, "存貨變化", "您的股票上升到 $" & $StockPrice)
Else
MsgBox(4096, "存貨變化", "您的存貨停留在 $" & $StockPrice)
EndIf
;隨機(jī)字符
Local $Letter
If Random() < 0.5 Then
;大寫(xiě)
$Letter = Chr(Random(Asc("A"), Asc("Z"), 1))
Else
;小寫(xiě)
$Letter = Chr(Random(Asc("a"), Asc("z"), 1))
EndIf