タイトル説明
1~7の範囲で一様乱数整数を生成する機能rand7を与えられ、10の範囲1において一様乱数整数を生成する機能rand10を書き込みます。
システムのMath.random()を使用しないでください。
例1:
入力:1
出力:[7]
例2:
入力:2
出力:[8,4]
例3:
入力:3
出力:[8,1,10]
注意:
rand7は、事前定義されています。
nは、rand10が呼び出された回数:各テストケースは一つの引数を持っています。
rand7が均等rand7 rand10を達成するために必要に応じて、1〜7を分散返さ、1〜10の均一な分布に戻すように頼みました。
アイデアは、溶液関数randnを構築することであり、nは10の整数倍である必要です。これは、関数randn%10 rand10によって得ることができます。
それは以上40をフィルタリングすることによってrand7 rand49、rand49することによって得ることができるがrand40を得ることができ、従ってrand10ことができます。次のように要約すると、ソリューションは以下のとおりです。
rand7 - > rand49 - > rand40 - > rand10
この溶液は、シーンのすべての関数randn生成RANDM(N <M)に一般化することができます。
C ++の実装
。1 |
|