Rubyで乱数&文字列を生成する方法を学びたい場合は、正しい場所にいます。
それはまさにこの記事が何であるかについてですので!
乱数を使用すると、配列からランダムな要素を選択したり、リストから勝者を選択したり、サイコロロールを生成したりすることができます。
Rubyでは、さまざまなプロパティを持つ乱数を生成する多くの方法があります。たとえば、
randメソッドは3つの方法で使用できます:
- 引数なしで、
rand
は0&1(0.4836732493など) - 整数引数(
rand(10)
)を使用すると、0&間の新しい整数を取得しますその数 - 範囲引数(
rand(1..20)
)を使用すると、範囲引数(rand(1..20)
)を使用すると、範囲引数(rand(1..20)
)を使用すると、範囲引数(rand(1..20)
)を使用すると、範囲引数(rand(1..20)
)を使用すると、範囲引数(rand(1..20)
)を使用すると、範囲引数(rand(1..20)
)を使用すると、範囲引数(rand(1..20)
)を使用すると、範囲引数(rand(1..20)
)を使用すると、範囲引数(rand(1..20)
)範囲の開始&範囲の終わり
ルビーでランダム性を生成する他の方法は次のとおりです:
- Array#shuffleメソッド
- Array#sampleメソッド
- SecureRandomクラス
いくつかの例を見てみましょう!
乱数の生成
randメソッドを使用してルビー乱数を生成することができます:
Randは、引数なしで呼び出された場合、浮動小数点数(0.4836732493
)を生成します。
引数をrand
に渡すと、ゼロからその数値までの数値を生成できます(ただし、その数値は含まれません)。
rand 100> 41
Ruby乱数の生成は本当に簡単ですが、ゼロから始まるのではなく、特定の範囲に数値を入れる必要がある場合はどうなりますか?
問題ない!
範囲を使用して、必要なものを正確に取得できます。
:
rand 200..500> 352
セキュアなRuby乱数
randによって生成された数字は、単純なアプリケーションには十分かもしれません…
…しかし、パスワードリセットトークンの生成などのセキ
SecureRandomはUnixシステム上の/dev/urandomからジェネレータをシードします&windows上ではCryptAcquireContext/CryptGenRandom APIを使用します。
:
require 'securerandom'SecureRandom.random_number> 0.232
これはrand
とよく似ていますが、最大数を渡すこともできます。
:
SecureRandom.random_number(100)> 72
SecureRandomには他にも出力形式があります。
hex
を使用すると、16進数の固定幅文字列を生成できます。
SecureRandom.hex> "87694e9e5231abca6de39c58cdfbe307"
Ruby2.5では、ランダムな英数字文字列を生成する新しいメソッドが導入されました:
SecureRandom.alphanumeric> "PSNVXOeDpnFikJPC"
配列からランダムな要素を選択する方法
今:
リストからランダムな選択を取得することができます。
これを試すことができます:
.shuffle.first> 30
しかし、Rubyにはこのタスクに適した(そしてより高速な)サンプルメソッドがあります:
.sample> 5
このコードはランダムな文字を生成します:
('a'..'z').to_a.sample> b
配列からN個の一意の要素を取得するには、整数引数をsampleに渡すことができます:
.sample(2)>
カスタムランダムジェネレータを引数として渡すこともできます:
.sample(random: SecureRandom)
Ruby Random Strings
究極のランダム性アプリケーションは、カスタム文字セットを持つランダムな文字列を生成することです。 ここにコードがあります:
def generate_code(number) charset = Array('A'..'Z') + Array('a'..'z') Array.new(number) { charset.sample }.joinendputs generate_code(20)
ここではいくつかのことが起こっています。
まず、範囲を使用して文字セットを準備し、それらを配列に変換します。 次に、ブロックでArray.new
を呼び出すことを利用して、ブロックによって生成された値でサイズnの配列を初期化できます。
このコードは、TufwGfXZskHlPcYrLNKg
という形式の文字列を生成します。
ニーズに合わせて文字セットを微調整することができます。
乱数ジェネレータのシード
rand
のようなメソッドを使用して生成される数値を制御したい場合は、シードを設定できます。
種子とは何ですか?
シードは、乱数のシーケンスを開始する数値です。
生成された数字はすべてこの種から派生しています。
そのため、シードの品質は通常、乱数の良いシーケンスを生成するための鍵です。
Rubyはすでにあなたのためにそれを処理しています(余分なセキュリティが必要な場合はSecureRandom
を使用します)が、いくつかのシナリオ(主に&デバッグをテス
これはsrand
メソッドで行うことができます。
Kernel.srand(1)
この種を使用すると、発電機があなたに与える数字を正確に知ることができます。
1番を種として:
Array.new(5) { rand(1..10) }#
シードを再度1に設定すると、シーケンスは6、次に9、10などで開始されます。
結論
それだ! Rubyプログラムでrandomnessの使用を開始する準備ができました¶
この投稿が役に立つと思いましたか?
あなたの友人とそれを共有&あなたが新しい何かをお見逃しなくので、私のニュースレターを購読!