を検索するためのモンテカルロ法を使用する方法:私は例えば、いくつかのシステムS.</p> <p>の限界確率を検索するためにモンテカルロ法を使用する方法を理解したいの限界確率
リミット(ボーダー) -if x
0 <= x < 0.1 => S0 -> S0
0.1 <= x < 0.9 => S0 -> S1
0.9 <= x < 0.9 => S0 -> S2
0.9 <= x < 0.9 => S0 -> S3
0.9 <= x < 1 => S0 -> S4
S4:私は方法を理解したよう
S0 S1 S2 S3
S0 0.1 0.9 0 0
S1 0 0.2 0.3 0.5
S2 0.2 0.1 0.5 0.2
S3 0.5 0 0.4 0.1
は、我々はいくつかの数(X)を生成し、確率を比較する必要があります
他の州でも同様です。
私は遷移の数を数えることができるこの方法を次のとおりです。私はこの問題を解決するために何をすべきかのヒントを聞いて喜んでいるでしょう
static double[] SimpleMonte(double[][] a, int iter = 1)
{
var n = a.GetLength(0);
var p =
a
.Select(x => x.Select((_, i) => x.Take(i + 1).Sum()).ToArray())
.ToArray();
Random rand = new Random();
double[] X = new double[n];
for (int x = 0; x < n; x++)
{
double count = 0;
for (int i = 0; i < iter; i++)
{
int row = x;
bool notG = true;
Console.Write("{0} -> ", row);
while (notG)
{
var e = rand.NextDouble();
Console.Write("({0})", Math.Round(e, 2));
bool ch = false;
for (int j = 0; j < n - 1; j++)
{
if (p[row][j] <= e && e < p[row][j + 1])
{
row = j + 1;
ch = true;
break;
}
}
if (!ch)
notG = false;
else
{
Console.Write("{0} -> ", row);
count++;
}
}
Console.WriteLine();
}
X[x] = count/iter;
}
return X;
}
https://dotnetfiddle.net/nJF5sm
。
問題を明確にすることはできますか?あなたは 'S x = x'を解く、つまり静止した設定を見つけたいですか? –