Excelの3つの変数でモンテカルロシミュレーションを実装しています。 Rand()関数を使用して、ワイブル分布(長い尾を持つ)からサンプリングしました。サンプルに適用される関数は非線形ですが滑らかです(exp、ln、cosなど)。各サンプルの結果は合格/不合格であり、全体的な結果は不合格の確率です。
MathCadの数値積分とモンテカルロの両方でこれを実装し、両方で同じ結果を得ました。 MathCadはMersenne Twister乱数ジェネレーターを使用していると思います。
私のExcelスプレッドシートは常に異なる結果(つまり、常に大きい)を取得しています。方程式が同じであることを確認しました。
Excelはどの乱数ジェネレーターを使用しており、どの程度優れていますか?これが私の問題の原因である可能性はありますか? exp、cosなどのExcel実装は問題ないと想定しています。
最後に、特定の乱数ジェネレータの(既知の)不十分なプロパティを軽減するためにモンテカルロを実装する方法はありますか? (私はマルコフ連鎖、ランダムウォークなどを聞いたことがありますが、それらについて本当にあまり知りません)
どうもありがとう。
McCullough(2008)によるこのトピックに関するジャーナルペーパーがあります。 Microsoft Excel 2007の統計手順の精度について(計算統計とデータ分析)
元の記事の引用:
乱数ジェネレータは常に不十分でした。 Excel 2003では、MicrosoftはWichmann–Hillジェネレーターを実装しようとしましたが、正しく実装できませんでした。 fixedバージョンがExcel 2007に表示されますが、このfixは正しく行われていません。 Microsoftは、Wichmann–Hillジェネレーターを構成する数十行のコードを正しく実装することに2度失敗しています。これは、学部のコンピュータサイエンス専攻でできることです。 Excelの乱数ジェネレーターは、科学的な目的で使用される乱数ジェネレーターの基本要件を満たしていません。
- 標準のランダム性テスト、たとえばL'EcuyerとSimard(2007)のCRUSHテストに合格することは知られていない(これらはMarsaglia(1996)のDIEHARDテストに取って代わります。比較については、Altman et al。(2004)を参照してください)。
- 適度な数の次元でほぼ独立している数を生成することは知られていません。
- 期間の長さが不明です。そして
- 再現できません。
これらのポイントの詳細については、添付の McCullough(2008)による記事 ;を参照してください。この領域でのExcel 2007のパフォーマンスは不十分です。
これは「ExcelのRand()関数はどれほど優れている」というGoogleのトップの結果であるため、新しいバージョンのExcelの回答を更新する価値があります。
Guy Melardによるこのペーパー " Microsoft Excel 2010での統計手順の精度について "は、Excel 2010でRand()関数をテストし、2007または2003よりも大幅に改善されていることを発見しました。サイクル長がはるかに長いメルセンヌツイスターアルゴリズムへのWichmann and Hillジェネレーター(2007/2003)。
その論文の作者は、ランダム性について「スモールクラッシュ」、「クラッシュ」、「ビッグクラッシュ」のテストを実行し、ほぼすべてのテストに合格しました。
したがって、それは確かに真の乱数と同じではありませんが、Excel 2010のRand()関数、およびおそらく新しいバージョンは、もはやひどいとは見なされません。
ただし、Excel 2010では、VBA乱数ジェネレーター用の2つの完全に異なるアルゴリズムと、データ分析ツールキットにあるRNGがまだ使用されていることに注意してください。 Melard氏によれば、どちらもひどいものであり、実際、VBAは毎回同じシード番号を使用するため、同じ番号が生成されます。
Excelの乱数に関する私の最大の不満は
これには市販の製品があります。見るのに飽きる前にグーグルが2つになる
http://www.mathwave.com/articles/random-numbers-Excel-worksheets.html
http://www.ozgrid.com/Services/Excel-random-number-generator.htm