JavaScript は配列からランダムな値を選択する
このチュートリアルでは、JavaScript の Math.random()
関数を使用して配列からランダムな値を選択する方法について説明します。
JavaScript の Math.random()
関数を使用して、配列からランダムな値を選択する
JavaScript のインデックスを使用して、特定の配列から値を選択できます。特定の配列からランダムな値を選択するには、0 から配列の長さまでの範囲のランダムなインデックスを生成する必要があります。Math.random()
関数を使用してランダム値を生成できます。このランダム値の範囲を設定するには、length
関数を使用して取得できる配列の長さを乗算する必要があります。
Math.random()
関数から生成されたランダム値は浮動小数点値です。浮動小数点値を整数に変換するには、Math.floor()
関数を使用する必要があります。Math.floor()
関数は、浮動小数点数を指定された数よりも小さい整数に変換します。たとえば、5つの値の配列を作成し、そこからランダムな値を 1つ選択して、コンソールに表示してみましょう。以下のコードを参照してください。
var myArray = ['one', 'two', 'three', 'four', 'five'];
var rand = Math.floor(Math.random() * myArray.length);
var rValue = myArray[rand];
console.log(rValue)
出力:
two
上記のコードでは、ランダムインデックスは変数 rand
に格納され、このインデックスを使用して、変数 rValue
に格納される配列からランダム値を選択できます。ビット単位の NOT
演算子~~
またはビット単位の OR
演算子|
を使用することもできます。Math.floor()
関数の代わりに、浮動小数点数を整数に変換します。ビット単位の演算子を使用する方が高速ですが、数百万の値を含む配列では機能しない場合があります。たとえば、ビット単位の NOT
演算子を使用して乱数を生成してみましょう。以下のコードを参照してください。
var myArray = ['one', 'two', 'three', 'four', 'five'];
var rand = ~~(Math.random() * myArray.length);
var rValue = myArray[rand];
console.log(rValue)
出力:
one
それでは、ビット単位の OR
演算子を使用して乱数を生成しましょう。以下のコードを参照してください。
var myArray = ['one', 'two', 'three', 'four', 'five'];
var rand = Math.random() * myArray.length | 0;
var rValue = myArray[rand];
console.log(rValue)
出力:
three
コードを再度実行すると、出力が変わります。また、すべてのコードを書き直す必要がないように、特定の配列からランダムな値を選択する関数を作成することもできます。たとえば、特定の配列からランダムな値を選択し、それを配列でテストする関数を作成しましょう。以下のコードを参照してください。
function RandArray(array) {
var rand = Math.random() * array.length | 0;
var rValue = array[rand];
return rValue;
}
var myArray = ['one', 'two', 'three', 'four', 'five', 'six'];
var rValue = RandArray(myArray);
console.log(rValue)
出力:
six
コードを再度実行すると、出力が変わります。これで、配列からランダムな値を選択するには、RandArray()
関数を呼び出すだけで済みます。