Function Reference
Random
浮動小数点型の擬似乱数を発生させます。
パラメータ
Min |
[オプション] 発生させる数の最小値。デフォルトは0。 |
Max |
[オプション] 発生させる数の最大値。デフォルトは1。 |
Flag |
[オプション] 1を設定すると整数型の結果が返されます。デフォルトは浮動小数点型。 |
返し値
成功 |
MinからMaxの間の擬似乱数を返します。 |
失敗 |
パラメータに間違いがあった場合0を返し、@errorを1に設定します。 |
注意
デフォルトではRandom関数は10進数の浮動小数点を返します。整数の結果のみが欲しい場合はFlagを1に設定してください。
パラメータが1つだけ与えられた場合、Maxパラメータと解釈されます。
整数型の結果はMinとMaxを”含みます”(浮動小数点型ではMaxを含みません)。
整数を使用する場合、Max-Minは2^31よりも小さくなければなりません。
オリジナルソースに基づくコメント
この関数はTakuji Nishimura、Makoto Matsumoto、Shawn Cokus、Matthe Bellew、Isaku Wadaによって書かれたメルセンヌツイスタ乱数発生器、MT19937を使用しています。
メルセンヌツイスタは乱数発生のためのアルゴリズムの1つです。これは他の乱数発生器の欠点をよく考慮してデザインされています。周期は 219937-1であり, 分布空間は623次元と膨大です。この発生器はまた高速でもあります。乗算と除算を避け、それによってメモリとパイプライン処理を有利にしています。さらに詳しい情報は開発者のウェブページhttp://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.htmlを参照。
Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, All rights reserved.
ソース及び実行形式の再配布と使用、及び修正は以下の条件が満たされている場合に許可される。
1.ソースコードで再配布される場合はソースコードが上記の著作権表示、この条件リスト、下記の免責事項を含んでいること。
2.実行形式ファイルで再配布される場合は上記の著作権表示、この条件リスト、下記の免責事項を含むドキュメンテーション等が配布物に付属すること。
3.
特定の書面による事前の許可なしにコントリビュータの名前をこのソフトウェアから派生した生産物の保証、宣伝に使用しないこと。
このソフトウェアは著作権者、コントリビュータからそのまま提供されており、限定的/包括的な明示的または暗黙的な一切の保証、暗黙的な保証及び特定の目的への適合の保証は一切されていません。著作権所有者またはコントリビュータはこのソフトウェアの使用によって生じた直接的、間接的、付随的、特殊的、懲罰的、または必然的な一切の損害(限定的/包括的、代替物調達またはサービス;使用、データ、利益の損失または事業の中断)が起きた場合、たとえそのような損害の可能性について知っている場合であっても契約、厳格責任、不法行為(過失その他を含む)を問わずどのような責任理論に基づいてもいかなる責任も負いません。
訳注:以下原文。原文のライセンスに従ってください。==========
Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3. The names of its contributors may not be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
訳注:原文終わり==========
関連
Round, SRandom
例
;コイン投げ
If Random() < 0.5 Then ; 0から1の間の値を返します。.
$msg = "Heads. 50% Win"
Else
$msg = "Tails. 50% Loss"
Endif
MsgBox(0,"Coin toss", $msg )
;サイコロ投げ
msgBox(0, "Roll of die", "You rolled a " & Random(1, 6, 1) )
$StockPrice = 98
;ストックマーケットシミュレーションゲームの一部
$StockPriceChange = Random(-10, 10, 1) ; -10から10の間の整数を発生
$StockPrice = $StockPrice + $StockPriceChange
If $StockPriceChange < 0 Then
MsgBox(4096, "Stock Change", "Your stock dropped to $" & $StockPrice)
ElseIf $StockPriceChange > 0 Then
MsgBox(4096, "Stock Change", "Your stock rose to $" & $StockPrice)
Else
MsgBox(4096, "Stock Change", "Your stock stayed at $" & $StockPrice)
Endif
;ランダムな文字
If Random() < 0.5 Then
;大文字
$Letter = Chr(Random(Asc("A"), Asc("Z"), 1))
Else
;小文字
$Letter = Chr(Random(Asc("a"), Asc("z"), 1))
Endif