128 :
デフォルトの名無しさん:
大学の課題で悩んでいます
その問題というのが
『ジョーカーを除くトランプ52枚(1~13×4種)からランダムに5枚を抜き出した時、
・ワンペア(同じ数字が2枚)
・ツーペア(同じ数字が2枚のものが2組)
・スリーカード(同じ数字が3枚)
・ストレート(5枚連続した数値、[10,11,12,13,1]や[1,2,3,4,5]はOKだが[12,13,1,2,3]など1をまたぐケースはNG)
・フラッシュ(5枚とも同種)
・フルハウス(ワンペアとスリーカードの組み合わせ)
・フォーカード(同じ数字が4枚)
・ストレートフラッシュ(ストレートとフラッシュの組み合わせ)
それぞれの役が発生する確率(実際には試行した回数)を
モンテカルロ法により求めるプログラムを作成する。
ただし、上位(記載が下にあるもの)の役と下位の役を同時に満たす場合は
上位の役を優先する。
因数にポインタを含む関数を適当に作成し、利用すること。
メイン関数直下での処理はできるだけ避けることが望ましい
入力についてはキーボードから試行回数(+改行)のみ入力する。
最大でもint型に収まる数値とする
』
という課題なのですが、
まずやってるのが
1、トランプ5枚をランダムに発生する関数を作成
2、トランプ5枚へのポインタを引数とし、多項式時間内に役を判断し、焼くおw返す関数を作成。役の判断は上位の役から行い、成立すればブレイクする
3、1〜2を数百回試行し、結果から各役の発生確率を計算する処理を行う
という順番でやっていたのですが、正直、2の段階で混乱してしまいます
どうか教えてください