ルビー乱数

Zeeshan Afridi 2023年6月21日
  1. Ruby で乱数を作成する
  2. Ruby で rand() を使用して乱数を生成する
  3. Kernel#srand を使用して乱数ジェネレーターをシードする
  4. Ruby でランダムな文字列を作成する
  5. まとめ
ルビー乱数

この記事では、Ruby で乱数を作成する方法について説明します。

Ruby で乱数を作成する

Ruby で乱数を生成するには、いくつかの方法があります。

  1. rand() メソッドを使用します。
  2. Kernel#srand メソッドを使用して、乱数ジェネレーターをシードします。

rand() メソッドは、01 の間のランダムな float を生成します。 これは、シミュレーションやゲームの乱数を生成するのに役立ちます。

rand() メソッドは、フロア メソッドと組み合わせて使用され、ランダムな整数を生成します。 これは、0 と floor メソッドに渡された数値の間のランダムな整数を返します。

たとえば、以下のコード スニペットは、010 の間のランダムな整数を生成します。

rand(10).floor

最後に、srand() メソッドを使用して、乱数ジェネレーターをシードできます。 これは、プログラムを複数回実行して乱数の正確なシーケンスを作成する場合に役立ちます。

Ruby で rand() を使用して乱数を生成する

rand() メソッドは、プログラミングで乱数を生成する一般的な方法です。 これは、アルゴリズムを使用して 0 と 1 の間の疑似乱数を生成する単純な方法です。

次に、この数値に目的の範囲を掛けて、最も近い整数に丸めて最終結果を取得します。

rand() メソッドは、現実的で予測不可能な環境を作成するために、ゲームやシミュレーションでよく使用されます。 また、統計サンプリングやデータ分析にも使用されます。

010 の間の乱数を作りたい場合は、このように rand メソッドを使用できます。

コード例:

rand(10)
puts rand(10)

出力:

5

次の例では、rand() メソッドを使用して 1 から 10 までの乱数を生成します。

コード例:

rand(1..10)
puts rand(1..10)

出力:

6

Kernel#srand を使用して乱数ジェネレーターをシードする

Kernel#srand メソッドを使用して乱数ジェネレーターをシードすることもでき、生成される乱数をより細かく制御できます。 シードを指定して呼び出すと、Kernel#srand メソッドは乱数ジェネレーターにシードを与え、繰り返し可能な乱数シーケンスを生成できるようにします。

シードが指定されていない場合、ジェネレーターには、時刻、プロセス ID、およびシーケンス番号の組み合わせがシードされます。 同じシードで Kernel#srand を呼び出すと、常に同じ乱数列が作成されます。

これは、デバッグや決定論的シミュレーションの作成に役立ちます。 ただし、本番環境で同じシードを使用することは、アプリケーションをより予測可能にし、悪用しやすくする可能性があるため、一般的に悪いことです。

反復可能な乱数列を生成する必要がある場合は、通常、Mersenne Twister などの専用 API を提供するライブラリを使用することをお勧めします。

コード例:

puts srand 1234
puts [rand, rand]

puts [rand(10), and(1000)]

puts srand 1234
puts [rand, rand]

出力:

68269704279078804018695389408585286811
0.1915194503788923
0.6221087710398319
4
1000
1234
0.1915194503788923
0.6221087710398319

Ruby でランダムな文字列を作成する

Ruby でランダムな文字列を生成する方法はいくつかあります。 1つの方法は、Array.sample メソッドを使用することです。

このメソッドは、配列からランダムな要素を選択します。

コード例:

arr = ['a', 'b', 'c', 'd', 'e']
arr.sample
puts arr.sample

出力:

c

ランダムな文字列を生成する別の方法は、SecureRandom.hex メソッドを使用することです。 これにより、16 進文字のランダムな文字列が生成されます。

コード例:

require 'securerandom'
inp=SecureRandom.hex(10)
puts inp

出力:

e30c8046b7fac0627436

SecureRandom#base64 メソッドを使用して、base64 文字のランダムな文字列を生成することもできます。

コード例:

require 'securerandom'
inp=SecureRandom.base64(10)
puts inp

出力:

kc8/UBu0aFA8eg==

特定の長さのランダムな文字列が必要な場合は、SecureRandom#random_bytes メソッドを使用できます。 これにより、ランダムなバイト文字列が生成されます。

require 'securerandom'
inp=SecureRandom.random_bytes(10)
puts inp

出力:

�gՙP0�n[

最後に、ランダムな英数字の文字列が必要な場合は、SecureRandom#urlsafe_base64 メソッドを使用できます。

コード例:

require 'securerandom'
inp=SecureRandom.urlsafe_base64(10)
puts inp

出力:

ce6gAf9EyVdPMA

まとめ

この記事では、Rand が Ruby プログラムで乱数を生成するのに役立つ可能性があると結論付けています。 このメソッドは、オプションの引数 (生成できる桁数の上限) を取ります。

別の方法は、乱数ジェネレーターをシードする Kernel#srand です。 Ruby 言語でランダムな文字列を作成することもできます。

著者: Zeeshan Afridi
Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn