機能所与 rand7
1~7の範囲で一様乱数整数を生成し、機能書く rand10
10の範囲1において一様乱数整数を生成します。
システムの使用しないでください Math.random()
。
例1:
入力:1
出力:[7]
例2:
入力:2
出力:[8,4]
例3:
INPUT:3 出力:[8,1,10]
思考:質問の意味は(rand7で、比較的簡単である)rand10を達成するために()。rand7()が生成される1-7すべての整数、rand10()我々は1-10すべての整数ということがあると思っています。我々は唯一の()rand7一度呼び出した場合、一つのことは、明白である、
我々は8,9,10の3桁の数字を生成することはできません。だから、明らかに私たちは、少なくとも2回呼び出す必要があります。コール2回は、番号の範囲が生成されます1-49で、ノートではない1-14こと。(ほかよりも乗算)1-49我々は41-49を破棄することができます。そのため、この時点で
我々は1-40であると生成することができます一様乱数の対象要件。10プラス1にこのように、被写体が出力で1-40遷移を生成する必要がある場合は、この発生した乱数に回答し、10後に余りをとる、40%そうでない= 0。
クラスソリューション: DEF rand10(自己): "" " :RTYPE:INT """ ランド = 41 ながらランド> = 41 : ランド =(rand7() - 1)* 7 + rand7()戻りランド10%+1