LeetCode470 - ミディアム(パイソン) - Rand7()を使用)(Rand10を実装

機能所与  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
        
        
            
        

おすすめ

転載: www.cnblogs.com/sky37/p/12244492.html
おすすめ