• ベストアンサー

乱数について

rand関数で乱数を作る時に、この関数は0~RAND_MAXの擬似乱数を作りますが、 この擬似乱数を特定の範囲だけ作ることは可能なのでしょうか? 例えば、30~70までの擬似乱数だけを作るとかです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ayumi_g
  • ベストアンサー率25% (5/20)
回答No.2

まず答えを書かせて頂きますと n = 30 + (rand() % (70-30 + 1)) 30と70という数字から、その範囲にいくつ数があるかを求めます 30~70の間には41個の数がありますので 70-30 + 1として+1しています。 その数をrand()で取得した数に%します。これは割った余りを求める演算子です。 この時点で0~40の範囲で数が求まるわけですが、その数に最低ラインの数である30を足すことで希望の範囲の乱数を得ることが出来ます。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

(int)(40 * ((double)rand() / RAND_MAX) + 30)

すると、全ての回答が全文表示されます。

関連するQ&A