C言語なら俺に聞け(入門篇) Part 42

このエントリーをはてなブックマークに追加
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の段階で混乱してしまいます
どうか教えてください