あなたの質問はひどく悪いです。ブラウン運動を適切に実装するためには、コーディングを始める前であっても、問題のドメインについてかなり洗練された仕様と分析が必要であることを指導者が指摘すべきであったため、これはほとんど間違いではありません。
ブラウン運動の正確な定義は、測定理論で関連するコースを取らない限り、おそらくあなたに不透明になるでしょう。しかし、ネット上には、Itoプロセス(ブラウン運動の例)の適切な記述を与える多くのリソースがあります。
このようなプロセスをコーディングすることに興味がある場合は、こちらを参考にしてください。ある段階で乱数を生成する必要があります。ほぼ確実に、あなたは正規分布から描画を生成することに関心を持つでしょう。ありがたいことに、これをC++プログラマが利用できる素晴らしい方法がいくつかあります。私のお気に入りはBoost.Randomライブラリ(またはC++ 11の関連ライブラリ)を使うことです。賢い戦略は、おそらくvariate_generatorを使用することにより、ランダム変量を生成する関数オブジェクトを使用することです:
#include <iostream>
#include <vector>
using namespace std;
#include <boost/random/mersenne_twister.hpp>
#include <boost/random/normal_distribution.hpp>
#include <boost/random/variate_generator.hpp>
int main()
{
// Some typedefs to help keep the code clean
// Always a good idea when using Boost!
typedef boost::mt19937 T_base_prng;
typedef boost::normal_distribution<> T_norm_varg;
typedef boost::variate_generator<T_base_prng&, T_norm_dist> T_norm_varg;
unsigned int base_seed = 42; // Seed for the base pseudo-random number generator
double mean = 0.0; // Mean of the normal distribution
double stdev = 1.0; // Standard deviation of the normal distribution
T_base_prng base_prng(base_seed); // Base PRNG
T_norm_dist norm_dist(mean, stdev); // Normal distribution
T_norm_varg norm_varg(base_prng, norm_dist); // Variate generator
// Generate 1000 draws from a standard normal distribution
vector<double> drawVec(1000);
for (vector<double>::iterator iter = drawVec.begin();
iter != drawVec.end(); ++iter)
{
*iter = norm_varg();
}
// More stuff...
return 0;
}
あなたはブラウン運動が何であるかのハンドルを取得したら、その後、使用していくつかの例を構築するために些細でなければなりませんBoost.Randomの機能
具体的に何を試しましたか、問題がありますか? – Chad
これはあなたのTAに尋ねる何かのように聞こえる。 –
それは本格的な[ブラウン運動](http://ja.wikipedia.org/wiki/Brownian_motion)か、はるかに単純な[ランダムウォーク](http://en.wikipedia.org/wiki/Random_walk)ですか?次の反復でランダムウォークからブラウン運動にプログラムを移行する必要がありますか? – sarnold