【80層】
踏破 : 確率
10層 : 0%
11層 : 0.0174%
12層 : 0.3018%
13層 : 2.059%
14層 : 7.4147%
15層 : 17.7463%
16層 : 32.2552%
17層 : 48.3514%
18層 : 63.5877%
19層 : 76.546%
20層 : 86.4433%
【100層】
踏破 : 確率
10層 : 0%
11層 : 0%
12層 : 0%
13層 : 0.0004%
14層 : 0.0166%
15層 : 0.1966%
16層 : 1.2653%
17層 : 4.7259%
18層 : 12.0952%
19層 : 23.7733%
20層 : 38.302%
private void NyzulMethod(int A, int B, ref string C)
{
//チャレンジ回数
int Loop = 1000000;
//目標層
int Mokuhyou = A;
//クリア可能層(XX層クリア出来るPT)
int ClearFloor = B;
//ワープ回数
int Warp = ClearFloor - 1;
//到達フロアー
int[] Floor = new int[ClearFloor];
//開始層は"1"
Floor[0] = 1;
//ランダムクラス
Random RandomClass = new Random();
//100層到達(成功)回数
int Seikou = 0;
for (int i = 0; i < Loop; i++)
{
for (int j = 1; j <= Warp; j++)
{
//簡単に説明すると目的の層に近ければ次の層へ、遠ければ???層へ飛ぶ。
//近いかどうかの判断は何層クリア出来るPTなのかで違う。
if ((Floor[j - 1] <= Mokuhyou) && ((Floor[j - 1] + (ClearFloor - j)) >= Mokuhyou))
{
//次の層へ飛ぶ(+1層)
Floor[j] = Floor[j - 1] + 1;
//100層超えた場合は1層に戻る。
if (Floor[j] > 100) Floor[j] = 1;
}
else
{
//???層へ飛ぶ(+2~+9層)
Floor[j] = Floor[j - 1] + RandomClass.Next(2, 10);
//もしランダムにより100層を超えた場合100層とする。(最後の希望)
//最後の希望が無い場合は1層に戻る。
if (Floor[j] > 100)
{
if (checkBox1.Checked)
{
Floor[j] = (checkBox1.Checked) ? 100 : 1;
}
}
}
//フロアチェック
for (int j = 0; j < Floor.Length; j++)
{
//目標層のフロアが入っていた場合は成功!
if (Floor[j] == Mokuhyou)
{
Seikou++;
break;
}
}
}
//確率計算
C = string.Format("{0}%", (((float)Seikou / (float)Loop) * 100));
}
【80層】
10層 : 0.3062%
11層 : 2.0975%
12層 : 7.2466%
13層 : 16.6771%
14層 : 29.513%
15層 : 43.5829%
16層 : 57.0957%
17層 : 69.0221%
18層 : 79.1312%
19層 : 86.9679%
20層 : 92.8033%
【100層】
10層 : 0%
11層 : 0.0015%
12層 : 0.0627%
13層 : 0.5798%
14層 : 2.7191%
15層 : 7.9905%
16層 : 16.9269%
17層 : 28.9896%
18層 : 42.4797%
19層 : 55.5965%
20層 : 67.662%
※???平均値が2~9層の5.5から2~11の6.5となりかなり現実的な数値となっています。