0

この投稿の最後の例 ( http://www.daniweb.com/software-development/cpp/threads/1769/c-random-numbers ) で、著者は乱数を生成するためのより優れた方法であると主張しています。しかし、私はこの行を読んで、何をしようとしているのかまだ混乱しています。

random_integer = lowest+int(range*rand()/(RAND_MAX + 1.0));

このコードをテストしましたが、毎回「1」の値を生成し続けました。

誰かが明確にしてくれることを願っています。

4

1 に答える 1

1

の範囲でランダムな整数を生成したいとします[a, b)。これは、範囲内でランダムな整数を生成し、以下[0, b - a)を追加することで実現できaます。

random_integer = a + rand(0, b - a)

[0, RAND_MAX]通常の を使用して、範囲内のランダムな整数を生成できますrand()。ここで、この間隔を , に合わせてスケーリングする必要があり[0, r)ますr = b - aRAND_MAXによって返される最大値は であるためrand()rand() / (MAX_RAND + 1.0)は です[0, 1)。です。r * rand() / (MAX_RAND + 1.0)_[0, r)

于 2013-09-03T08:04:41.000 に答える