私は0-100印刷200乱数
から乱数を返す関数getrand100()
を持っているが、繰り返しそれらのどれとランダムな順序で番号1-200を印刷するためのコードスニペットを書きます。あなたはこれを行う方法を助けてください1から100
に乱数を取得するために)(時間の任意の数をgetrand100を呼び出すことができますか?あなたは一様分布のない要求を得なかっましたので、
私は0-100印刷200乱数
から乱数を返す関数getrand100()
を持っているが、繰り返しそれらのどれとランダムな順序で番号1-200を印刷するためのコードスニペットを書きます。あなたはこれを行う方法を助けてください1から100
に乱数を取得するために)(時間の任意の数をgetrand100を呼び出すことができますか?あなたは一様分布のない要求を得なかっましたので、
そして、0から200までの数字の配列を作成し、それらをシャッフルするFisher-Yates Shuffleを使用しています。
あなたgetrand100
機能のみを0から100までの数字を与えているので、このような何かを書く:0〜200
にあなたの乱数を与える
int rnd = getrand100();
int scale = getrand100();
if (scale >= 50)
rnd += 100;
は実際にはもう少し複雑ですそれは乱数の範囲が変わるからです。つまり、最初は0から200までの乱数を生成したいと思います。次回は0から199まで、次に198から197までなどです。乱数をスケールする方法が必要です。次のようなものは、一様分布にあなたが合理的に近い取得します:これは、丸め機能を持っていると仮定し
int rnd = getrand100();
double frnd = rnd/100.0;
int realRnd = round(frnd * range);
。 range
はあなたの範囲のトップです。したがって、最初の呼び出しrange
は200、次に199などです。
これは完全な一様分布を与えません。これは、2桁の有効数字でしか処理されないためですが、教室にとって受け入れられる結果が得られます割り当て。
は、getrand100() + getrand100()
としてgetrand200()
を定義します。 1-200の数字の配列を作成します。 getrand200
を使用してFisher–Yates shuffleアルゴリズムのスキューされたバージョンを実装します。
CとJavaの両方を定義しました。 – fge
この宿題はありますか? – PeeHaa
はい私は論理を探していますので、私はどちらかの言語で実装しています。 –