問題タブ [montecarlo]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
6 に答える
4013 参照

math - すべてのデータ ポイントを保存せずに平均信頼区間を計算する

大きい場合n(十分な大きさを決定する方法については以下を参照)、中心極限定理により、標本平均の分布を正規 (ガウス) として扱っても安全ですが、任意の信頼区間を与える手順が必要です。n. n-1その方法は、自由度のあるスチューデント T 分布を使用することです。

そこで問題は、一度に 1 つずつ収集または遭遇する一連のデータ ポイントが与えられた場合、 (以前に遭遇したすべてのデータを保存せずに) データ ポイントの平均に対する信頼区間c(たとえば) をどのように計算するかということです。c=.95

これを尋ねる別の方法は、次のとおりです。ストリーム全体を保存せずに、データ ストリームの最初と 2 番目の瞬間をどのように追跡しますか?

ボーナス質問: ストリーム全体を保存せずに、より高い瞬間を追跡できますか?

0 投票する
8 に答える
1896 参照

algorithm - 「アリのコロニー」の最適化に関する詳細はどこで確認できますか?

私は、さまざまなタイプのアルゴリズムを最適化するためのヒューリスティックなアプローチとして「アリのコロニー」モデルを使用することについて、あちこちで読んでいます。ただし、アリのコロニーの最適化について入門的な方法で、または詳細に説明している記事や本をまだ見つけていません。このアイデアについて詳しく学べるリソースを誰か教えてもらえますか?

0 投票する
5 に答える
2879 参照

math - 数式の無限ループの可能性?

私は次の問題を抱えており、方程式の一部を理解するのに苦労しています:

積分を推定するモンテカルロ法は基本的に、無作為にたくさんのサンプルを取り、加重平均を求めます。たとえば、f(x) の積分は、N 個の独立したランダム サンプル x rから次のように推定できます。

代替テキスト http://www.goftam.com/images/area.gif

範囲 [x1, x2] の xr の一様確率分布の場合。各関数評価 f(xr) は独立しているため、この作業を一連のプロセスに分散するのは簡単です。

私が理解していないのは、 f(x r ) が何をすべきかということですか? それは同じ方程式にフィードバックしますか?無限ループじゃないの?

0 投票する
4 に答える
1420 参照

algorithm - ランダム分割表を生成する効率的な方法は?

ランダムな分割表を生成する効率的な方法は何ですか? 分割表は、各行の合計が固定され、各列の合計が固定されているような長方形のマトリックスとして定義されますが、各行と各列の合計が正しい限り、個々の要素は何であってもかまいません。

ランダムな分割表を生成するのは非常に簡単ですが、素朴なアルゴリズムよりも効率的なものを探しています。

0 投票する
3 に答える
4663 参照

python - モンテカルロを使用した PI 桁の検索

モンテカルロを使用して π を見つけるための多くのアルゴリズムを試しました。解決策の 1 つ (Python で) は次のとおりです。

悲しい部分は、1000000000 でも精度が非常に悪いことです ( 3.141... )。

これは、このメソッドが提供できる最大の精度ですか? 私がモンテカルロを選んだ理由は、並列部分に分割するのが非常に簡単だったからです。簡単に分割して計算できるπの別のアルゴリズムはありますか?

0 投票する
4 に答える
5994 参照

c# - C#モンテカルロインクリメンタルリスク計算の最適化、乱数、並列実行

私の現在の仕事は、一連の債務者の地域ごとの自己資本比率の数値を計算するモンテカルロシミュレーションを最適化することです。

実行が約10倍遅いため、本番環境で実行する必要があり、数または毎日の実行が必要です。さらに、結果の数値の粒度は、ある段階でデスクレベルまで改善する必要があります。私が提供したコードは、基本的に、半生産能力のビジネスユニットで使用されるプロトタイプです。

アプリケーションは現在シングルスレッドであるため、マルチスレッドにする必要がありSystem.Threading.ThreadPoolます。MicrosoftParallel Extensionsライブラリを参照することもできますが、この銀行のサーバーでは.NET 2に制限されているため、この人のアプリケーションを検討する必要があります。ポート、http://www.codeproject.com/KB/cs/aforge_parallel.aspx

.NET 3.5 SP1にアップグレードするために最善を尽くしていますが、これはこの規模の組織では主要な演習であり、契約期間内には不可能な場合があります。

dotTracehttp://www.jetbrains.com/profiler )のトライアルを使用してアプリケーションのプロファイルを作成しました。他にどのような優れたプロファイラーが存在しますか?無料のもの?

実行時間の多くは、均一な乱数を生成し、これを正規分布の乱数に変換するために費やされます。彼らはC#メルセンヌツイスターの実装を使用しています。彼らがそれをどこで手に入れたのか、あるいはそれが均一な乱数を生成するためにこれ(または最良の実装)を行うための最良の方法であるかどうかはわかりません。次に、これは計算で使用するために正規分布バージョンに変換されます(私はまだ翻訳コードを掘り下げていません)。

また、以下を使用した経験は何ですか?

あなたが知っている代替案はありますか?私はC#開発者なので、C#を好むでしょうが、C ++のラッパーは問題にならないはずですよね?

たぶん、C++実装を活用することでさらに速くなります。これらのライブラリのいくつかは、変換ステップなしで、正規分布の乱数を直接生成するための最速の方法を備えていると思います。また、後続の計算に役立つ他の関数がいくつかある場合もあります。

また、これが搭載されているコンピューターは、クアッドコアOpteron 275、8 GBメモリですが、Windows Server 2003Enterprise32ビットです。64ビットOSにアップグレードするようにアドバイスする必要がありますか?この決定を支持する記事へのリンクは本当にありがたいです。

とにかく、あなたが持っているかもしれないどんなアドバイスと助けも本当にありがたいです。

0 投票する
4 に答える
1212 参照

excel - 定量的データ、Excel、トレンドライン、モンテカルロシミュレーションを前提とした実行時間の式を決定する方法

いくつかの数学とおそらくExcelについてあなたの助けを得ることができますか?

私は自分のアプリのベンチマークを行い、反復回数と債務者の数を増やして、秒単位でかかった時間を記録しました。その結果、次のようになりました。

債務者の数Oと反復の数Iの式として、T(秒単位の時間)の関数をどのように考え出すことができますか?

ありがとう

0 投票する
5 に答える
11093 参照

c# - C# Mersenne Twister ランダム整数ジェネレーターの実装 (SFMT) モンテカルロ シミュレーション

これまでのところ、ここにある C# Mersenne Twisterを使用して乱数を生成してきました。

http://www.centerspace.net/resources.php

ここで2倍高速であるはずのSFMTを発見しました:

http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/

SFMT の C# 実装を教えてもらえますか?

私の要件は、0 と 2^20 (1048576) の間 (および含む) の整数を生成することです。

24 時間時計で実行されるシミュレーションでは、これを毎日何兆回も行う必要があるため、これを完全に微調整するのに何日も費やす準備ができています。

現在、私の要件に合わせて新しいメソッドを追加することで、センター スペース メルセンヌ ツイスターを微調整しました。

メソッドを使用して、上記のキャストとシフトを節約するために 0 と 2^20 の間 (および 0 を含む) の整数を生成するgenrand_int32()独自のバージョン を生成したいのですが、数学がわかりません。正確にどうすればこれを行うことができますか?genrand_int20()

また、uint を使用すると int よりも高速になりますか、それとも単にアドレス指定可能な数値の問題ですか? 1048576 までしか必要ないので、速度だけに関心があります。

また、これは.NET 2 を搭載した Windows Server 2003 R2 SP2 (32 ビット) ボックスで実行されます。プロセッサはAMD Opteron 275 (4 コア)です。

0 投票する
2 に答える
2280 参照

c++ - ランダム セットの高速生成、モンテカルロ シミュレーション

100 個までの数値のセットがあります。このセットで MC シミュレーションを実行したいのですが、基本的な考え方は、セットを完全にランダム化し、最初の 20 個までの値で比較/チェックを行い、結果を保存して繰り返すことです。

現在、実際の比較/チェック アルゴリズムは非常に高速で、実際には約 50 CPU サイクルで完了します。これを念頭に置いて、これらのシミュレーションを最適化するために、ランダム セットをできるだけ速く生成する必要があります。

現在、George Marsaglia による Multiply With Carry アルゴリズムを使用しています。これは、非常に高速な 17 CPU サイクルでランダムな整数を提供します。ただし、Fisher-Yates のシャッフル アルゴリズムを使用すると、100 個のランダムな整数、約 1700 の CPU サイクルを生成する必要があります。これは、私の比較時間をはるかに覆い隠しています。

私の質問は、このタイプの MC シミュレーションを実行するための他のよく知られている/堅牢な手法はありますか?

セットから 20 個の値をランダムに選択することも考えましたが、20 個の一意のエントリが選択されるように衝突チェックを行う必要があります。

アップデート:

回答ありがとうございます。投稿後に思いついた方法について、別の質問があります。問題は、これが真に堅牢な (RNG が良好であると仮定して) ランダムな出力を提供するかどうかです。基本的に私の方法は、入力配列と同じ長さの整数値の配列を設定し、すべての値をゼロに設定することです。次に、次のように、入力セットから 20 個の値をランダムに選択し始めます。

基本的には上で述べたように、20 個の値をランダムに選択しますが、衝突を回避するための多少最適化された方法のように思えます。これは良いランダム出力を提供しますか? その非常に高速です。

0 投票する
2 に答える
952 参照

multicore - Ocaml でマルチコアを使用してモンテカルロ シミュレーションを行う方法は?

Ocaml プロセスは 1 つのコアしか使用できず、複数のコアを使用するには複数のプロセスを実行する必要があります。

モンテカルロ シミュレーションを並列化するために使用する Ocaml フレームワークはありますか?