Ruby randで乱数を発生させる
Rubyで、randを使用して、乱数を発生させるサンプルコードを記述してます。rubyのバージョンは2.7.2を使用してます。
環境
- OS windows10 pro 64bit
- ruby 2.7.2p137
rand使い方
randを使用すれば、乱数を発生させることが可能です。
rand(数値)
# 乱数範囲は 0 ~ 数値 - 1
以下は、乱数を発生させるサンプルコードとなります。
p rand(10)
# 0 ~ 9
p rand(10) + 10
# 10 ~ 19
少数は、小数部は切り捨てられます。
p rand(10.9)
# 0 ~ 9
また、範囲オブジェクトを使用すると、指定した範囲で乱数を生成できます。
同じ結果であれば範囲オブジェクトの場合、少しだけパフォーマンスは下がります。
p rand(1..10)
# 1 ~ 10
p rand(1...10)
# 1 ~ 9
少数を範囲オブジェクトに指定すると、指定した範囲でFloat値でランダムに生成します。
5.times do
p rand(0.1..0.9)
end
# 0.5044279607193463
# 0.7503245137496386
# 0.7420311659985956
# 0.2400500516117443
# 0.5053949197655653
また、srandで種を設定すると、何度実行しても同じ乱数が生成することが可能です。
# 乱数の種を設定
srand(10)
# 0~999の値を5回出力
5.times do
p rand(10)
end
# 乱数の種を設定
srand(10)
# 0~999の値を5回出力
5.times do
p rand(10)
end
<1回目>
# 9
# 4
# 0
# 1
# 9
<2回目>
# 9
# 4
# 0
# 1
# 9
0 以上 1 未満のFloat値がランダムに生成されます。
5.times do
p rand
# 1 ~ 10
end
# 0.1273888552565009
# 0.17556682331716011
# 0.6476959664360796
# 0.24685361551232754
# 0.5129696927864187
Randomオブジェクトを使用しても、乱数は発生させることができますが、パフォーマンスが少し下がるため、同じことであればrandを使用した方が良さそうです。
random = Random.new
5.times do
p random.rand(1..10)
# 1 ~ 10
end
# 9
# 4
# 5
# 9
# 10
【参考】 randとrandom.randを1000万回実行した結果
user system total real
#rand(10) 1.437000 0.000000 1.437000 ( 1.428762)
#random.rand(0..9) 2.109000 0.000000 2.109000 ( 2.100042)
-
前の記事
php 配列を宣言する 2020.12.12
-
次の記事
php 配列の空判定の「empty」と「===[]」のパフォーマンスの計測する 2020.12.12
コメントを書く