乱数は、一意の識別子の作成からゲームにおける現実世界のシナリオのシミュレーションまで、JavaScript プログラミングにおいて重要な役割を果たします。この記事では、JavaScript で乱数を生成するためのさまざまな方法を、基本的なテクニックと高度なテクニックの両方に焦点を当てて説明します。
目次
- JavaScript で乱数を使用する理由
- 基本: Math.random()
- ランダムな整数の生成
- 乱数の範囲を指定する
- 異なる分布を持つ乱数
- 実際のアプリケーションでの乱数の使用
- 乱数のシード
- 乱数を使用するためのベスト プラクティス
- JavaScript の乱数に関するよくある質問
- 結論
- JavaScript で乱数を使用する理由
Javascript 乱数は、動的なコンテンツや予測不可能なシナリオを作成するプログラミングにおいて貴重です。 JavaScript では、次の目的で乱数をよく使用します。
• 一意の ID を生成する
• ゲームのランダム性をシミュレートする
• 表示されるコンテンツの順序をランダム化する
• アルゴリズムでランダム化テストを実施する
アプリを構築する場合でも、ゲームを構築する場合でも、乱数を効果的に生成する方法を理解することが不可欠です。
- 基本: Math.random()
JavaScript で乱数を生成する主なメソッドは Math.random() です。この関数は、0 (両端を含む) から 1 (両端を含まない) までの擬似乱数の 10 進数を返します。以下に例を示します。
JavaScript
コードをコピーする
randomDecimal = Math.random(); にしましょう。
console.log(randomDecimal);
このコードは、0.4387635 など、0 から 1 までのランダムな 10 進数をログに記録します。
Math.random() の制限
Math.random() には便利ですが、次のような制限があります。
• 範囲は [0, 1) に制限されます。
• 整数ではなく、10 進数のみを生成します。
• カスタム範囲内の整数や数値の生成など、特定の使用例に対する構成機能がありません。
- ランダムな整数の生成
整数を取得するには、Math.random() の結果に数値を乗算し、Math.floor() または Math.round() を使用して整数を取得します。例えば:
0 ~ 9 のランダムな整数
JavaScript
コードをコピーする
let randomInt = Math.floor(Math.random() * 10);
console.log(randomInt); // 0 から 9 までのランダムな整数を生成します
このコードでは、Math.random() が 10 を乗算した小数を生成し、次に Math.floor() がそれを切り捨てて 0 から 9 までの整数を取得します。
1 ~ 10 のランダムな整数
1 ~ 10 など、別の範囲のランダムな整数を取得するには、次のようにします。
JavaScript
コードをコピーする
let randomInt = Math.floor(Math.random() * 10) 1;
console.log(randomInt); // 1 から 10 までのランダムな整数を生成します
- 乱数の範囲の指定
多くの場合、5 ~ 15 などのカスタム範囲内の数値を生成する必要があります。
カスタム範囲の関数
JavaScript
コードをコピーする
関数 getRandomIntInRange(min, max) {
return Math.floor(Math.random() * (最大値 - 最小値 1)) 分;
}
console.log(getRandomIntInRange(5, 15)); // 5 ~ 15 のランダムな整数を生成します
このコードでは、max - min 1 で範囲を調整し、数値が最大値に到達できるようにします。
- 異なる分布を持つ乱数
標準の Math.random() メソッドは、一様な分布で数値を生成します。これは、各数値が選択される確率が等しいことを意味します。さまざまな分布 (ガウス分布や指数分布など) を必要とするアプリケーションの場合は、カスタム関数またはライブラリが必要になります。
以下は、ガウス (正規) 分布を近似する基本的な例です。
JavaScript
コードをコピーする
関数 gaussianRandom() {
let u = Math.random();
let v = Math.random();
return Math.sqrt(-2.0 * Math.log(u)) * Math.cos(2.0 * Math.PI * v);
}
console.log(gaussianRandom());
- 実際のアプリケーションでの乱数の使用
乱数はさまざまな状況で適用できます。
• ゲーム: 敵の位置や戦利品のドロップをランダムに生成します。
• UI テスト: 入力値をランダム化してアプリケーションの動作をテストします。
• データ サンプリング: 分析のために大規模なデータ セットからランダムなサブセットを選択します。
例: 配列のシャッフル
JavaScript
コードをコピーする
関数 shuffleArray(配列) {
for (let i = array.length - 1; i > 0; i--) {
let j = Math.floor(Math.random() * (i 1));
[配列[i], 配列[j]] = [配列[j], 配列[i]];
}
配列を返します。
}
console.log(shuffleArray([1, 2, 3, 4, 5]));
- 乱数のシード
JavaScript の Math.random() はシードをネイティブにサポートしていません。ただし、seedrandom.js のようなライブラリを使用すると、シードを設定して、乱数シーケンスを反復可能にすることができます。これは、一貫性が重要なゲームやテストの場合に特に役立ちます。
seedrandom.js の使用:
JavaScript
コードをコピーする
let シードランダム = require('シードランダム');
let rng = シードランダム('シード');
console.log(rng()); // 反復可能な乱数を生成します
- 乱数を使用するためのベスト プラクティス
• 分散のニーズを理解する: ほとんどのタスクには標準の一様乱数を使用します。必要な場合にのみ他のディストリビューションを検討してください。
• セキュリティ アプリケーションでの予測可能性の回避: Math.random() は暗号的に安全ではありません。機密性の高いアプリケーションの場合は、crypto.getRandomValues() の使用を検討してください。
• 必要に応じてライブラリを使用する:seedrandom.js や Chance.js などのライブラリは、拡張機能を提供します。
- JavaScript の乱数に関するよくある質問
- Math.random() を使用せずに特定の範囲の乱数を生成できますか?
いいえ、JavaScript の組み込み乱数生成は Math.random() に依存していますが、数式を調整することで範囲を制御できます。
- Math.random() は暗号アプリケーションにとって安全ですか?
いいえ、Math.random() は暗号的に安全ではありません。安全なアプリケーションには crypto.getRandomValues() を使用します。
- JavaScript で複数の乱数を生成するにはどうすればよいですか?
ループ内で Math.random() を呼び出すか、関数を使用して乱数の配列を生成できます。
- JavaScript で乱数を繰り返すことはできますか?
はい、JavaScript の乱数生成は擬似乱数であるためです。 seedrandom.js などのライブラリを使用してシードを設定し、シーケンスを制御します。
- 乱数生成における Math.floor() と Math.round() の違いは何ですか?
Math.floor() は常に切り捨てますが、Math.round() は最も近い整数に丸めるため、範囲に影響を与える可能性があります。
- JavaScript でランダムなブール値を生成するにはどうすればよいですか?
Math.random() を使用して、それが 0.5 より大きいか小さいかを確認します。
JavaScript
コードをコピーする
letrandomBoolean = Math.random() >= 0.5;
- 結論
JavaScript は、簡単なタスクのための Math.random() からシードなどの高度なニーズのためのライブラリまで、乱数を生成するための柔軟なメソッドを提供します。動的機能の作成、シミュレーションの実行、ゲームの構築のいずれの場合でも、乱数生成をしっかりと理解することで、アプリケーションをより魅力的で機能的なものにすることができます。コーディングを楽しんでください!
以上がJavaScript での乱数の生成: 包括的なガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。