2016-08-15 2 views
-3

rand()関数を使用して2つの変数をランダムに選択できるかどうかは疑問です。私はthing1とthing2を持っていると言うと、私のためにそれらの1つを選ぶことができますか?rand()を使用して2つ以上の変数を選択する

私の現在のコードだけで使用のrand()乱数を生成し、その奇妙な場合、私は言ってthing1と私はそれ文句を言わない仕事を... thing3を追加した場合でも、その後thing2しかし

+1

あなたのやり方はまさにそのやり方です。 – ckruczek

+0

2つの変数の選択に成功しましたか? –

+0

変数がすべて同じ型の場合は、N個の別個の変数よりも配列を使用する方が良いでしょう。 'rand()'の結果を([リンクされた質問の受け入れられた答えに記述されている方法を使って) '[0..N-1]'にマップします。ここで 'N'は配列の要素の数です。 –

答えて

0

あなたはnものを持っていると仮定した場合。まず、0(k*n)-1の範囲の乱数を生成します。kは正の整数です。次に、生成した数をkで割る。 0からn-1までの番号が表示されます。 0を物件1に、1を物物2に、n-1を物物nに、

さらに単純であれば、0からn-1までの乱数を生成し、上記のようにマッピングしてください。

1

関数は、0RAND_MAXの間の数値を返します。包括的です。

この範囲をX個のサブレンジに分割します。ここで、Xはあなたが持っている「変数」の数です。戻り値が最初のサブ範囲内にある場合、最初の "変数"を使用します。戻り値が2番目のサブ範囲内にある場合は、2番目の変数を選択します。など


また0からXが再びあなたが持っている「変数」の数であるX、の範囲の値を取得するためにモジュロ演算子を使用することができます。次に、この単一の数字を使用して "変数"を選択します(たとえば、配列のインデックスとして使用するなど)。

このモジュロを使用する方法は完全ではありません。例えば、理由とより良い方法についてはthis old answerをご覧ください。

関連する問題