カード全部集める確率を計算する為に、究極コンプガチャがわかれば良いと思った。
まずは1番単純なサイコロの目コンプをプログラミングしてみた。
かいつまんで言うと、乱数の初期シードを設定しているのに、なぜか毎回同じ乱数が出て狂いそうだった。
初期シードをrand()にしたら解決した。クラスで関数定義したから変なバグが出たと思ってるけど、だとしたら意味なくね?と思う。上級者にとっては壁でもなんでもないらしく、まぁ色々いじってたら解決しそうではある。
そもそも、randがイマイチって触れ込みだったのに最終的にこいつだけが頼りなの終わってる。まぁまた今度。実質4日目だから。まだ初心者だから。
とりあえず1万回ぶん回した結果、コンプまでに掛かった回数は146878回。
期待値 多分14.7回なので、平均取ると結構近い。数学が先にあるから統計使わなくて楽だった。
後はカード作ってレア度当てて~で、書き終わってるまである。メモリが足りるのを祈るのみ。
書いてて、昔乱数ライブラリ使えなくて(変なバグが解決しなかった)パイハゲに堕ちたのを思い出した。
そう思うと、1年に2日くらいはプログラミングしているのかもしれない。いや、気持ち入れ替えてるので実質初見。
次にやること
・シードの解決
・プログラムの自然な拡張
でも、ぶっちゃけ関数1個のクラスを作らなきゃバグってない気もする。関数をヘッダーに隔離したいってだけで要らない面倒が増えてるような。
仕事にするならいざしらず、趣味だしな・・・。それ含めて検証しよう。
ーーー
そう言えば、関数の引数を配列にしました。拡張性を考えて。偉くないですか?