2012年06月12日

第1弾で計算できていなかった確率を計算

今回、確率計算第1弾でアップしたページで計算できていなかった部分の計算を行い、表を全部埋めて下記ページを更新しました。
http://space.geocities.jp/puyopuyo_muumu/sa_probabilities.html

相手がネクネクまで見て最善手を決定する形については計算できていませんでしたが、第2弾でネクネクまで見て判断する場合の計算をしてましたので、同じやり方で出来ます。
それから、期待値を計算した際に気づいたのですが、p(a1*-b1:n)の計算を行うコードに誤りがあったので修正しました。(式にある係数をコード化する際に一部写し忘れていました。)

例として、p(a2*+b2)の計算を示します。(第1弾の中では一番面倒でした。)



nが2以下の場合は以下のとおり。
p(a2*+b2:n≦1) = 1
p(a2*+b2:2) = 1-q(bb)*q(aa) = 1-1/256

nが3以上のとき、

p(a2*+b2:n≧3) = q(^a^b)*p(a2*+b2:n-1) + q(bb)*p(a2*:n-1) + q(^ab1)*p(a2*+b1:n-1) + q(a1^b)*p(a1*+b2:n-1) + q(ab)*p(a2*+b2:ab:n)

となります。
abハチイチが来た場合はネクストを見て判断する必要があるので、現在手がabハチイチであるときに発火されない確率p(a2*+b2:ab:n)とし、以下でこれを計算します。

p(a2*+b2:ab:n≦2) = 1
p(a2*+b2:ab:n≧3) = q(bb)*p(a1*:n-2) + q(a^b)*p(a1*+b1:n-2) + q(ab)*p(a2*+b2:ab-ab:n) + q(^ab1)*p(a2*+b2:ab-^ab1:n) + q(^a^b)*p(a2*+b2:ab-^a^b:n)

ネクストがabハチイチ、a0個b1個、aもbも0個のときはそれぞれネクネクまで見て判断する必要があるので、
それぞれp(a2*+b2:ab-ab:n)、p(a2*+b2:ab-^ab1:n)、p(a2*+b2:ab-^a^b:n)として計算します。

p(a2*+b2:ab-ab:n≦2) = 1
p(a2*+b2:ab-ab:n≧3) = q(aa)*0 + q(b)*p(a1*:n-3) + q(a1^b)*p(a1*:n-3) + q(^a^b)*p(a2*+b1:ab-^a^b:n-1)
# (ab|ab|^a^b)のとき、p(a2*+b1:n) < p(a1*+b2:n) なので、(a2*+b1)にするのが最善手

p(a2*+b2:ab-^ab1:n≦2) = 1
p(a2*+b2:ab-^ab1:n≧3) = q(aa)*0 + (q(b) + q(a1^b))*p(a1:n-3) + q(^a^b)*p(a2:n-3)
# (ab|^ab1|^a^b)のとき、p(a2*:n) < p(a1*+b1:n) なので、(a2*)にするのが最善手

p(a2*+b2:ab-^a^b:n≦2) = 1
p(a2*+b2:ab-^a^b:n≧3) = q(a^b)*p(a1*+b1:n-3) + (q(ab) + q(^ab1)*p(a2:n-3) + q(^a^b)*p(a2*+b1:n-3) + q(bb)*a1(n-3);
# (ab|^a^b|ab)のとき、p(a2*:n) < p(a1*+b1:n) なので、(a2*)にするのが最善手
# (ab|^a^b|^a^b)のとき、p(a2*+b1:n) < p(a1*+b2:n) なので、(a2*+b1)にするのが最善手

(p(a2*:n) < p(a1*+b1:n)やp(a2*+b1:n) < p(a1*+b2:n)は厳密に示されているわけではありませんが、n=1〜7の範囲で全て成立しているのでOKということにしました。)

以上、なかなか面倒でしたがやり方は決まっているので機械的にできました。
このように、ネクネクまで見た後は(相手とのツモ差によるツモ予見を使用しない限りは)現在手を置かなくてはならないので、ネクネクまでのパターンで全ての場合を尽くせます。
posted by むうむ at 01:01 | Comment(0) | ぷよぷよ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。