2次正方行列の逆行列を求めるプログラム
scanfの使い方には気をつけなければいけないらしいが、今の自分には他の方法を知らないため使用した。
#include<stdio.h> int main() { int i,j; double a[2][2],b[2][2]; // 行列の入力 for (i = 0; i <= 1; i++) { for (j = 0; j <= 1; j++) { printf("要素,a[%d][%d]を入力せよ\n",i+1,j+1); scanf("%lf",&a[i][j]); } } //行列の確認 printf("入力した行列a[i][j]は以下のようになります.\n"); for (i = 0; i <= 1; i++) { for (j = 0; j <= 1; j++) { printf("%f\t",a[i][j]); } printf("\n"); } //逆行列の存在確認と計算 if(a[0][0]*a[1][1]-a[0][1]*a[1][0] == 0){ printf("逆行列は存在しません\n"); }else{ printf("逆行列は以下のようになります.\n"); for (i = 0; i <= 1; i++) { for (j = 0; j <= 1; j++) { if(i == j){ b[i][j]=a[1-i][1-j]/(a[0][0]*a[1][1]-a[0][1]*a[1][0]); printf("%f\t",b[i][j]); }else{ b[i][j]=a[i][j]*(-1)/(a[0][0]*a[1][1]-a[0][1]*a[1][0]); printf("%f\t",b[i][j]); } } printf("\n"); } } }
単位行列
Markdown方式がはてなダイアリーに対応しているとの事なので、自分の忘備録兼markdown方式の練習がてら記事を書いてみようと思う。
最近は、C言語の復習をしている。
とはいっても3~4年前に大学の演習で少し触った程度であるので、本当に基礎の基礎から始めなくては行けない。
ということで、4×4の単位行列を書くだけのプログラムを書いてみた。
#include<stdio.h> int main() { int i,j; int array[i][j]; i = 0; j = 0; for(i = 1; i <= 4; i++){ for(j = 1; j <= 4; j++){ if(i == j ) array[i][j] = 1; else array[i][j] = 0; printf("%d ",array[i][j]); } printf("\n"); } return 0; }
確率的視点から見た当たり譜面 -Append Disc-
謝罪
穴冥の当たり譜面が降ってくる確率、と書きましたが、正しくはです。
現在修正済です。誤った情報を流し、大変申し訳ありません。
1.はじめに
この記事は、確率的視点から見た当たり譜面の続きとなっております。
よって、上記の記事から読むことをおすすめします。
以前の記事の最後に
>今回は、《一度でも降ってくる確率》に注目しました。
>しかし出来ることならば、《二回以上降ってくる確率》《三回以上降ってくる確率》
>もしくは、ピンポイントで《N回降ってくる確率》などを求められれば、それに
>越したことはありません。
と書きました。
今回は、冥SPA(以降:穴冥)の当たり譜面に視点をあて、記事を書かせて頂きます。
2.二項定理
皆様は、高校数学で『二項定理』というものを学んだ事を覚えていますか。
単刀直入に数式だけ書かせていただきますと
が成り立つ。
といったものです。
この記事では、こちらを利用した確率分布『二項分布』を用いて、当たり譜面を考察します。
3. kの確率
具体例を出してみましょう。
プレイヤーは1P側なので、1Pサイド視点で記事を進めます。2Pサイドの方、ごめんなさい...
問:穴冥の当たり譜面
ここで穴冥の当たり譜面を、「2鍵が4,5,6,7のどこか、3鍵が1,2,3のどこかに降ってくるもの」と定義する。
穴冥は、の確率で当たり譜面が降ってくる。
この曲を30回選曲した時、当たり譜面がk回降ってくる確率を求めよ。
また、当たり譜面がk回以上降ってくる確率を求めよ。
ただし、とする。
こちらの問題を解いてみます。
今回は、数式成分が多くなりますので、ゆっくり読み進めて頂けると幸いです。
まずは、当たりがk回降ってくる確率から考えてみましょう。
当たりがk回降ってくるということはつまり、当たりでない譜面が30-k回降ってくるということになります。
よって、《最初にk回続けて当たり譜面が出て、後に30-k回当たりでない譜面が来る確率》は
となります。
しかし、今回は最初にk回当たり譜面が出る必要はありません。30回の試行中にk回当たり譜面が出ればよいのです。
よって、「30回のうちk回だけ当たり譜面が出る組み合わせの数」を掛けあわせてやる必要があります。
つまり、当たり譜面がk回降ってくる確率は
となります。
この式の形、どこかで見覚えがありますよね。そうです。冒頭で紹介した、『二項定理』の右辺の形に酷似しています。
後は、好きなkの値を代入して計算しましょう。
4. k以上の確率
では、当たり譜面がk回以上降ってくる確率に進みます。
《当たり譜面がk回以上降ってくる確率》は
1- 《当たり譜面が(k-1)回以下降ってくる確率》と読み替えてやる事が出来ます。
実際に数値を入れて考えましょう。
《当たり譜面が1回以上降ってくる確率》は
1-《当たり譜面が0回以下降ってくる確率》です。
《当たり譜面が2回以上降ってくる確率》は
1-《当たり譜面が1回以下降ってくる確率》です。
文字で書くと難しい印象がありますが、実際には至極当たり前のことです。
では、ここで数式の出番です。
例として、《当たり譜面が4回以上降ってくる確率》を考えます。
ここで、《当たり譜面が4回以上降ってくる確率》をと置きます。
先ほど述べたとおり
となります。ここでは《当たり譜面が3回以下降ってくる確率》です。
では、とはなんなのでしょうか。
至極簡単なものです。
と、単純に3回、2回、1回、0回の和を取ったものです。
つまり、以下の様に書くことが出来ます。
この事から、《当たり譜面が4回以上降ってくる確率》については、以下の等式が成り立ちます。
後はこれを計算してやるだけです。
5. グラフ化
今回は、4回なのでそれほど計算は面倒ではありません。しかし、これがもし10回、11回となってきた場合とたんに計算は面倒になります。
ここで、少しコンピューターの力に頼ってみましょう。
excelを使用し、作成した表を下に乗せます。
小数点下三桁まで載せています。見苦しい点、ご容赦下さい。
Table. 選曲回数と確率の関係
21以上は限りなく0に近い値のため、ここでは20回までとさせて頂きました。
また、グラフにプロットした値がこちらになります。
こちらの表、グラフを見るに問:穴冥の当たり譜面の解は分かります。
解:穴冥の当たり譜面。
表、グラフを参考。
一例として、当たり譜面が4回以上降ってくる確率は、98.6%である。
6.期待値
期待値という言葉、割と馴染みのある言葉です。
今回の試行、期待値という点で見てみた場合、おおよそとなります。7.5回、つまり7~8回くらいは降ってくるんじゃないかな。と想像出来ます。
それを意識したうえで上のグラフを見てみましょう。
まず、のグラフです。
確かに、8回周辺で最大の値を取っています。おおむね期待値通りの値です。
次に、のグラフです。
k=7.5の値を見るに、約70%となっています。
つまり、外れる可能性も30%ほどあるということになります。
30%を大きな数字を見るか否かは人それぞれですが、私はとても大きな数字だと考えます。
つまり
「期待値が7.5回もあるのだから、7~8回の当たりが降ってこないのはおかしい」
と考えるのはナンセンスです。30%もある確率を引いただけの話なのですから。
7. 終わりに
今回は穴冥の当たり譜面に視点をあて、実際どれだけ降ってくるのであろうか。と考察してみました。
95%以上、を1つのラインと置いた場合、「5回くらいは降ってくるでしょう。」という事になります。
今回は、穴冥の当たり譜面、選曲回数30回と固定しました。
しかし実際はもっと色々な選択があります。
「10回やって7回も3バス引いたんだけど!」や「冥の連打、何回やっても右にしか寄らない!」など理不尽な経験をした方、そう少なくはないのではないと思います。
そういった事象が、実際どれくらいの確率で起こることなのだろう...と考えてみること。なかなか面白いことだと僕は考えています。
この記事を見て、そういう遊びに興味を持ってくださる方がいれば、幸いです。
最後に一般化した問題と解答を置いて、〆させて頂きます。
IIDXをプレイする人にわかりやすいよう言葉を入れ替えてますが、一般的な二項分布の問題です。
ここまで読んで頂きありがとうございました。
問:一般化
当たり譜面がpの確率で降ってくる曲がある。
この曲をn回選曲した時、当たり譜面がk回降ってくる確率を求めよ。
また、当たり譜面がk回以上降ってくる確率を求めよ。
ただし、とする。
解:一般化
確率的視点から見た当たり譜面
謝罪
穴冥の当たり譜面の確率、と書いていますが、正しくはです。
現在修正済です。誤った情報を流し、大変申し訳ありません。
追記
続きを書きました。よろしければこちらも御覧ください。
確率的視点から見た当たり譜面 -Append Disc-
1. はじめに
皆さん初めまして。
今回、 #音ゲーマー達の発信所 (2枠目) Advent Calendar 2014という企画に参加させて頂きました。
多くの方の素晴らしい記事を読ませて頂き、よい企画に参加出来たと思っております。これから書かれる方の記事も大変楽しみにしています。
こちらの記事では、BeatmaniaIIDX(以下IIDX)における当たり譜面を確率的視点から見たことについて書いてみようと思います。
なおDPの話題については触れませんので、当記事内でIIDXと記されていたら、SPに限定されます。
2. 当たり譜面
IIDXには、『RANDOM』というオプションがあります。これはスクラッチを除く7つのレーンが、列ごとにランダムに配置されます。
RANDOMオプションで降ってくる譜面は「正規、MIRROR譜面も降ってくる」と仮定すると、
となり、実に5040通りとなります。
よって当たり譜面の性質にもよりますが、BeatmaniaIIDXでは『当たり待ち』と呼ばれる、「RANDOMオプションをつけて、いい譜面が来るまで何度も選曲する」事がしばしば行なわれます。
ところで、皆さんは当たり譜面といいますとどんな譜面を思い浮かべますか。一例として『嘆きの樹』SP ANOTHER(以降SPA)『Go Beyond!!』SPAの分割譜面、『冥』SPAの2鍵と3鍵が左右の手で取れる配置、というものは、多くの人が想像するのではないでしょうか。
参考リンク:TexTage様(http://textage.cc/)
・嘆きの樹
これ(正規)が
こんな感じに!
参考までに、『嘆きの樹』SPA、『Go Beyond!!』SPAで分割譜面を引く確率は(白鍵が皿と反対側に寄る方のみを考えた場合)、『冥』SPAの2鍵と3鍵が左右の手で取れる配置が来る確率は(2鍵が皿と反対側に寄る方のみを考えた場合)となります。
3.当たり待ち
ここで、以下の問題を考えてみましょう。統計学を学んだ事がある方にとっては見覚えのある問題だと思います。
問:選曲回数
嘆きの樹SPAは選曲するごとにの確率で当たり譜面が降ってくる。
当たり譜面が一度でも降ってくる確率が95%以上となるには
何度選曲すればよいだろうか。
以降問題を解くにあたって「当たり譜面=嘆きの樹の分割譜面」と置きます。
嘆きの樹、PREMIUM FREE(以下PF)で10分間選曲し続けても一度も当たりが来なかった。という方もいるのではないでしょうか。、凡そ3%ですね。トキワの森のピカチュウより低い確率です。とはいえ、一回くらい引いても良さそうなものですが、ここで少し考えてみましょう。
一般的に、確率で当たる譜面を回選曲した時に一度以上当たり譜面が降ってくる確率はを大きくしていくと、約63%に収束します。今回の問題の場合、35回選曲しても約63%の確率でしか当たりを引けないということです。逆に考えると、37%ほどの確率で一度も当たりが来ません。こう考えると結構多いですね。PF10分で選曲出来る回数は1曲辺り30秒と考えて、約20回。こう考えると、PF一回で一度も引かないということはよくあることなのかもしれません。
4. 選曲回数
さて、本題に入りましょう。
ここで問題を少し読み替えて見ましょう。
《当たり譜面が一度でも降ってくる確率が95%以上となる》というのは
《当たり譜面が一度も降ってこない確率が5%以下となる》と読み替えられます。
また、もう少し読み換えてやると。
《当たりではない譜面が毎回降ってくる確率が5%以下となる》となります。
当たり譜面を引く確率がなので、当たり譜面が降ってこない確率は
そのため、選曲回数を回と置いてやると
《当たりでない譜面が毎回降ってくる確率》はとなります。
すなわち、問題の解を得るには
の式が成り立つ最小のを求めてやれば良い。ということになります。
・まず、両辺の対数を取ります。0.05は見た目の関係上、と置きます。
・次に両辺をで割ります。のため、不等号が入れ替わります。
・後は、計算機に頼って計算します。
となりました。よって、問の答えとしては
答:選曲回数
104回以上選曲すればよい
となります。案外多いですね。
PF1度で約20回選曲すると仮定して、6度ほどPFを行えばほぼ確実に一度当たり譜面が降ってくるでしょう。
それでも来なかった場合は5%弱を引いてしまったと嘆きましょう。
5. おわりに
今回の記事では、嘆きの樹の当たり譜面に限定しましたが、他の譜面に対しても、当たり譜面が降ってくる確率がわかれば適用可能です。この方法を使い、自分自身が求めている当たり譜面がどのくらい選曲回数を重ねれば降ってくるのか、計算してみるのも面白いかもしれません。
今回は、《一度でも降ってくる確率》に注目しました。しかし出来ることならば、《二回以上降ってくる確率》《三回以上降ってくる確率》もしくは、ピンポイントで《N回降ってくる確率》などを求められれば、それに越したことはありません。
それを求めるためには二項分布というものを使用します。IIDXの当たり待ちという行為による結果は当たり譜面、もしくは当たりでない譜面の二択しかありません。これは、裏表で出る確率の違うコインでコイン投げをしているようなものです。複雑そうに見えて案外単純です。
そちらについてもお話したいのですが、長くなってまいりましたので続きはまたの機会に。
明日使える無駄知識を、あなたに。
ここまで読んでくださった皆様に感謝の言葉を述べて、〆させて頂きます。ありがとうございました。