Rubyで乱数を作る方法:rand・Randomクラス・シード設定まで徹底解説
生徒
「先生、Rubyでランダムな数字を作る方法ってありますか?」
先生
「はい、Rubyではrand関数やRandomクラスを使うことで簡単に乱数を生成できます。」
生徒
「randとRandomクラスってどう違うんですか?」
先生
「randは簡単に使える関数で、一度に一つの乱数を作れます。Randomクラスはオブジェクトとして乱数を管理でき、シード値を設定することで同じ乱数の並びを再現することも可能です。」
1. randで乱数を作る
randはRubyで一番簡単に乱数を作れる方法です。整数や小数の乱数を生成でき、範囲も指定できます。
puts rand # 0以上1未満の小数
puts rand(10) # 0から9までの整数
puts rand(5..10) # 5から10までの整数
0.3456789123
7
8
例えばゲームでランダムに数字を出したり、くじ引きのシミュレーションなどに便利です。
2. Randomクラスで乱数を管理する
Randomクラスを使うと、乱数をオブジェクトとして管理できます。複数の乱数列を同時に扱いたい場合や、シードを設定して同じ結果を再現したい場合に便利です。
r = Random.new
puts r.rand # 0以上1未満の小数
puts r.rand(100) # 0から99までの整数
0.732145678
45
これによりプログラムのテストやデバッグでも同じ乱数列を再現できます。
3. シード値を使って乱数の再現性を保つ
乱数は通常毎回変わりますが、シード値を指定することで同じ乱数列を再現できます。シード値とは乱数を生成するための初期値のことです。
r1 = Random.new(1234)
puts r1.rand(10) # 常に同じ結果
puts r1.rand(10)
r2 = Random.new(1234)
puts r2.rand(10) # r1と同じ乱数列
puts r2.rand(10)
7
2
7
2
これにより、シミュレーションやテストで乱数の結果を再現でき、結果の確認が容易になります。
4. randとRandomクラスの使い分け
randは簡単な乱数生成、Randomクラスは複数の乱数列やシード値の管理に向いています。例えばゲームのステージごとに異なる乱数列を使いたい場合はRandomクラスを使うと便利です。
初心者の方はまずrandから始め、慣れてきたらRandom.newとシード値を活用する方法に挑戦すると理解が早くなります。
5. 乱数活用のポイント
Rubyの乱数はゲーム開発、くじ引き、テストデータ生成、シミュレーションなど幅広く使えます。乱数の基礎を理解することで、プログラムの幅が広がります。
特にシード値を活用すると、結果を再現できるのでデバッグやテストの効率も大幅に向上します。ランダム性と再現性をうまく組み合わせて、実用的なプログラムを作りましょう。