問題タブ [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.
r - モンテカルロシミュレーションを高速化するための最良のトリックは何ですか?
S-Plusで大規模なモンテカルロシミュレーションを実行するときはいつでも、それが完了するのを待つ間、私はいつもあごひげを生やしてしまいます。
Rでモンテカルロシミュレーションを実行するための最良のトリックは何ですか?分散方式でプロセスを実行する良い例はありますか?
r - MCMCログの混乱
誰か説明してくれませんか
常に 0 の MCMC 受け入れ率になりますか? どんな説明でも大歓迎です!
.net - .NET を使用したアリのコロニーの最適化
アリ コロニーの最適化を実装する .NET クラス ライブラリまたは .NET フレームワークを探しています。このトピックに関するリンク、リソースなどを教えてください。
multithreading - 並列だが遅い
私はモンテカルロ法を使用して pi を計算し、並列プログラミングと openmp の基本的な経験をしています。
問題は、1 スレッド、x 反復を使用すると、常に n スレッド、x 反復よりも高速に実行されることです。誰でも理由を教えてもらえますか?
たとえば、コードは「a.out 1 1000000」のように実行されます。ここで、1 はスレッド、1000000 は反復です。
algorithm - 「運命の輪」のシミュレーション (モンテカルロ シミュレーション ヒット オア ミス法)
モンテカルロ ヒットまたはミス シミュレーションを使用するランダマイザーを作成しようとしています。
ID と確率値を表す Key-Value ペアがあります。
これらの値をすべて追加すると、合計は 1.0 になります。
これらの値は、「ホイール」上の「スライス」の総面積として想像できます (例: ID 2 はホイールの 37% を占め、ID 3 はホイールの 12% しか占有しません)。「範囲」に変換すると、次のようになります。
現在、Random.NextDouble() を使用して、0.0 から 1.0 の間のランダム値を生成しています。そのランダムな値は、ホイールの「スピン」と見なされます。たとえば、ランダマイザーが 0.35 を返すと、ID 2 が選択されます。
double の配列がある場合、これを実装する最良の方法は何ですか?
3d - 単位球上の均一なランダム(モンテカルロ)分布
ペットのレイトレーサーのランダムな値を生成するアルゴリズムを使用して説明する必要があります。
一点から光線を放射します。そして、私はこれらの光線の分布に問題があります。分布を均一にする必要がありますが、そうではありません...
私が今直面している問題は、結果の空間を歪めた後、最初は均一である分布が均一ではないということです。
したがって、たとえば、極座標系の場合、r角度とt角度を生成します。分布は均一ではなく、均一にすることもできません。各極に近い空間は、たとえば赤道に近い空間よりもはるかに密度の高い結果になります。その理由はかなり明白です。私は均一に分布した点を円筒形の空間から球形に変換します。そして、私は結果を歪めます。同じ問題は、立方体でランダムに生成されたポイントを正規化する場合です。
今の私の考えはこれです:四面体を作成し、その頂点を正規化し、各面(三角形)を中央の点で分割し、正規化し、十分な点が得られるまで再帰的に繰り返します。次に、これらのポイントを少し「歪め」ます。次に、それらを再度正規化します。それでおしまい。
私は、最後のステップを除いてどのステップでもランダム分布を使用しないため、この方法自体が純粋数学のモンテカルロ法ではないことを理解しています。そして、私はこの複雑さのためにこのソリューションが好きではありません。
誰もがもっとシンプルでありながらまだ何かを提案できますか
- ランダム
- ユニフォーム
- 速い
- 単純
ありがとう!
編集:
正しい方法だけでなく、高速な方法が必要です。だから私はモンテカルロについて尋ねています。提供された回答は正しいですが、速くはありません。四面体を使用する方法は高速ですが、それほど「ランダム」ではありません=>正しくありません。
もっと適切なものが本当に必要です。
c++ - C ++でのモンテカルロ法の良い本?
C++ でのモンテカルロ アルゴリズムに関する優れた入門書を推薦できる人はいますか? できれば物理学への応用があり、さらに好ましくは量子力学のような物理学です。
ありがとう!
python - 並列処理に最適なシード
異なるマシンでモンテカルロ シミュレーションを並行して実行する必要があります。コードは C++ で書かれていますが、プログラムは多くのこと、特にランダム シードを設定する Python スクリプトでセットアップされ、起動されます。関数 setseed は 4 バイトの符号なし整数を取得します
シンプルな
ジョブをクラスターのキューに送信したため、ジョブは数分間保留されたままになり、その後開始されるため、あまり良くありませんが、開始時刻は予測できません。2 つのジョブが同時に開始される可能性があります (秒)。切り替える:
しかし、私は幸せではありません。最善の解決策は何ですか?たぶん、時間、マシン ID、プロセス ID からの情報を組み合わせることができます。それとも、/dev/random (Linux マシン) から読み取るのが最善の解決策でしょうか?
/dev/random から 4 バイトを読み取るには?
文字列を教えてください。整数が必要です!
java - 乱数を効率的に選択する
ランダムサンプルを使用して計算を近似する方法があります。このメソッドは何百万回も呼び出されるため、乱数を選択するプロセスが効率的であることが非常に重要です。
Java が実際にどれほど速いかはわかりRandom().nextInt
ませんが、私のプログラムは、私が望んでいるほどには恩恵を受けていないようです。
乱数を選択するときは、次のことを行います (半疑似コードで)。
さて、これは明らかに悪い最悪の場合の実行時間を持っています。理論的には、ランダム関数は永遠に重複した数値を追加できるため、whileループに永遠に留まる可能性があります。ただし、数値は {0..45} から選択されるため、値が重複することはほとんどありません。
上記の方法を使用すると、他の方法よりも 40% だけ速くなります。これは概算ではありませんが、正しい結果が得られます。これは約 100 万回実行されたので、この新しい方法は少なくとも 50% 高速になると予想していました。
より高速な方法について何か提案はありますか? あるいは、一連の乱数を生成するより効率的な方法を知っているかもしれません。
明確にするために、ここに2つの方法があります:
いくつかのテストとプロファイリングの後、この方法が最も効果的であることがわかりました。
c# - Excel NORMINV 関数を実行する C# ライブラリはありますか?
Office Interrop を使用して、いくつかのモンテカルロ シミュレーションを実行し、Excel 関数NORM.INVを広範囲に使用しています。この関数は、3 つの引数 (確率、平均、標準偏差) を取り、累積分布の逆数を返します。
コードを Web アプリに移動したいのですが、サーバーに Excel をインストールする必要があります。NORM.INV と同等の機能を持つ C# 統計ライブラリを知っている人はいますか?