ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript 乱数生成のマスター: Math.random() 以降のガイド

JavaScript 乱数生成のマスター: Math.random() 以降のガイド

Susan Sarandon
Susan Sarandonオリジナル
2024-11-04 06:12:02355ブラウズ

Master JavaScript Random Number Generation: A Guide to Math.random() and Beyond
乱数は、ゲーム開発やシミュレーションから UUID 生成に至るまで、多くのプログラミング シナリオで使用されます。そのため、JavaScript には乱数を処理するための組み込みメソッドが用意されています。この投稿では、JavaScript で乱数を生成するさまざまな方法を、簡単なものから高度なものまで見ていきます。それでは、始めましょう!

JavaScript での乱数生成の基本

JavaScript では、乱数を生成する主なメソッドは Math.random() です。このメソッドは、0 (両端を含む) から 1 (両端を含まない) までの浮動小数点乱数を返します。これは、0.2345 や 0.6789 など、[0, 1) の範囲の値を返すことを意味します。それはとても簡単です!これのコードサンプルを確認してみましょう:

let randomNum = Math.random();
console.log(randomNum); // Outputs a random number between 0 and 1

システムでプログラムを実行すると、次のような出力が得られます。

Master JavaScript Random Number Generation: A Guide to Math.random() and Beyond

これは出発点としては優れていますが、ランダムな整数または特定の範囲の数値が必要な場合は、Math.random() だけでは十分ではありません。

範囲内の乱数の生成

特定の範囲、たとえば特定の最小値と別の特定の最大値の間で乱数を生成するには、少し計算を行う必要があります。以下に役立つ公式を示します:

function getRandomInRange(min, max) {
  return Math.random() * (max - min) + min;
}

console.log(getRandomInRange(10, 20)); // Outputs a number between 10 and 20

これにより、次のような出力が得られます:

Master JavaScript Random Number Generation: A Guide to Math.random() and Beyond

Math.random() は 0 から 1 までの数値を生成します。そして、それに (max - min) を掛けて min を加算することで、数値が [min, max) の範囲内に収まることを確認します。

範囲内でランダムな整数を生成する

場合によっては、浮動小数点値の代わりに整数が必要になることがあります。特定の範囲でランダムな整数を生成するには、Math.floor() または Math.ceil() を使用できます。方法を確認してみましょう:

function getRandomIntInRange(min, max) {
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

console.log(getRandomIntInRange(1, 100)); // Outputs a random integer between 1 and 100

このコードを実行すると、次のような出力が得られます。

Master JavaScript Random Number Generation: A Guide to Math.random() and Beyond

ここで、Math.floor() は最も近い整数に切り捨て、結果が [min, max] の範囲内の整数になるようにします。

ランダムなブール値の生成

JavaScript でランダムなブール値 (true または false) を生成することもできます。これは、ゲームや意思決定のあらゆるシナリオで役立ちます。

function getRandomBoolean() {
  return Math.random() >= 0.5;
}

console.log(getRandomBoolean()); // Outputs true or false randomly

コードを実行すると、次のような出力が得られます。

Master JavaScript Random Number Generation: A Guide to Math.random() and Beyond

配列からランダムな値を生成する

配列からランダムな要素を選択したい場合は、Math.floor() と Math.random() を簡単に使用できます。それをどのように行うことができるかを見てみましょう:

let randomNum = Math.random();
console.log(randomNum); // Outputs a random number between 0 and 1

これで、プログラムを実行すると、次のように配列からランダムな要素が得られます。

Master JavaScript Random Number Generation: A Guide to Math.random() and Beyond

配列のシャッフル

配列をシャッフルするには、つまり要素をランダムに再配置するには、Fisher-Yates シャッフル アルゴリズムを使用できます。 Math.random() を使用して実装する方法は次のとおりです:

function getRandomInRange(min, max) {
  return Math.random() * (max - min) + min;
}

console.log(getRandomInRange(10, 20)); // Outputs a number between 10 and 20

ここでプログラムを実行すると、次のようなシャッフルされた配列が得られます。

Master JavaScript Random Number Generation: A Guide to Math.random() and Beyond

ランダムな UUID の生成

多くの開発シナリオでは、一意の識別子を使用する必要がある場合があり、ランダムな UUID (Universally Unique Identifier) の使用を検討することもできます。以下は、ランダムなメソッドを使用した UUID ジェネレーターの基本的な例です。

function getRandomIntInRange(min, max) {
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

console.log(getRandomIntInRange(1, 100)); // Outputs a random integer between 1 and 100

したがって、このプログラムを実行すると、次のようなランダムな UUID が生成されます。

Master JavaScript Random Number Generation: A Guide to Math.random() and Beyond

結論

ご覧のとおり、JavaScript では乱数を生成するための柔軟性が非常に高くなります。 Math.random() を基盤として使用すると、乱数、整数、ブール値を作成したり、配列をランダム化することもできます。これらの中心的なテクニックを理解することで、JavaScript プロジェクトにランダム性を実装するための強固な基礎が得られることを願っています。ゲーム、宝くじシミュレーター、または予測不可能性が必要な機能を構築する場合でも、これらのメソッドはニーズをカバーします!

そして最後に、ブログを読んでいただきありがとうございます!有益で価値のある内容であると感じていただければ幸いです。詳細については、Twitter (swapnoneel123) をフォローしてください。そこでは、ツイートやスレッドを通じてそのようなコンテンツを共有しています。また、Twitter で他の人と共有することを検討し、投稿に私をタグ付けしてください。私にも表示されるようになります。私のGitHub (Swpn0neel) をチェックして私のプロジェクトを確認することもできます。素晴らしい一日になりますように。それまで学び続け、探究し続けてください!!

Master JavaScript Random Number Generation: A Guide to Math.random() and Beyond


よくある質問

Math.random() は本当にランダムですか?

いいえ、Math.random() は真のランダムではありません。これは擬似乱数生成器 (PRNG) であり、決定論的アルゴリズムを使用して数値を生成します。これらの数値はランダムに見えるかもしれませんが、予測可能なプロセスによって生成されます。

JavaScript で Math.random() のシードを設定できますか?

JavaScript の Math.random() では、シードをネイティブに設定できません。他の一部のプログラミング言語では、再現性を高めるためにシード乱数ジェネレーターを使用できますが、JavaScript でこの機能が必要な場合は、サードパーティのライブラリ (seedrandom など) が必要になります。

Math.random() は、それより大きな範囲ではなく、0 から 1 までの数値を返すのはなぜですか?

0 から 1 までの浮動小数点数を返す Math.random() の設計上の選択は、柔軟性を提供することです。正規化された値を返すことにより、開発者は、特定の最小値と最大値の間の整数や数値など、任意の範囲または形式に簡単にスケールできます。

Math.random() を頻繁に使用することにパフォーマンス上の懸念はありますか?

ほとんどの場合、Math.random() は、ゲーム、アニメーション、その他の日常的なアプリケーションなど、通常の使用には十分効率的で高速です。ただし、リアルタイムで数百万の乱数を生成する必要がある場合 (たとえば、高パフォーマンスのシミュレーションなど)、WebAssembly ベースの乱数ジェネレーターやカスタム アルゴリズムなどの最適化されたソリューションを検討することをお勧めします。

Math.random() は暗号化目的に使用できますか?

いいえ、Math.random() は暗号化目的としては十分に安全ではありません。これは予測可能であるため、パスワードや暗号キーの生成など、安全な乱数が必要な状況では使用しないでください。これらのシナリオでは、より安全なランダム性を提供する Web Cryptography API によって提供される crypto.getRandomValues() メソッドを使用する必要があります。

以上がJavaScript 乱数生成のマスター: Math.random() 以降のガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。