JSで範囲ランダム化とシーケンスランダム化を生成する手順の詳細な説明

php中世界最好的语言
リリース: 2018-05-23 14:36:38
オリジナル
1536 人が閲覧しました

今回は、JSでランダム範囲とランダムシーケンスを生成する手順について詳しく説明します。JSでランダム範囲とランダムシーケンスを生成する際の注意点は何ですか? 以下は実際的なケースです。一緒に見てください。

JavaScriptでは、よくMath.random()メソッドを使って乱数を生成しますが、このメソッドで生成される乱数は0から1までの乱数のみです。まず、よく使用される次のメソッドの特徴を見てみましょう:

•1.Math.random(); 結果は 0 ~ 1 (0 を含み、1 を除く) の乱数になります

•2.Math.floor( num); パラメータ num は数値であり、

functionresult は num の 整数 の部分です。整数を取得するための parseInt(num) メソッドと同じです。

•3.Math.round(num); パラメータ num は数値であり、関数の結果は num を四捨五入した後の整数になります。

•4.Math.ceil(num); n 以上の最小の整数を返します。

上記の方法を合理的に使用して、指定された範囲で乱数を生成します:

最大値ではなく最小値を含みます:

parseInt(num) は、受信した num を丸め、小さな整数に変換します。 Math.random()に最大値と最小値の差を乗算し、parseIntで処理(このときの範囲は[0-差分]であることに注意)し、最小値を加算すると、最小値は得られますが、最小値は得られません。最大の整数値。

最小値を含むが最大値を含まない乱数を取得します。次の関数を使用して実装します:

function getRandom1(start, end) {
      var length = end - start;
      var num = parseInt(Math.random() * (length) + start);
      return num;
    }
ログイン後にコピー
最大値を含むが最小値を含まない:

それより大きい最小の整数を取得します。 num 以上、つまり、num を大きな整数に変換して渡します。 Math.random()に最大値と最小値の差を乗算し、Math.ceil()で処理し(このときの範囲は(0-差分]であることに注意)、最小値を加算すると最小値が得られます。整数の最小値を除いた最大値を含む値、つまり、上記の場合の parseInt を Math.ceil() に変更しますMath.ceil(num)

最小値を含まない最大値を含む乱数を取得するには、を使用します。実装する関数は以下のとおりです:

 function getRandom1(start, end) {
    var length = end - start;
    var num = Math.ceil(Math.random() * (length) + start);
    return num;
  }
ログイン後にコピー
最大値と最小値の両方が含まれる状況:

最大値と最小値の両方が含まれるこのとき、取り得る値の範囲が 1 に比べて拡張されています。上記の 2 つの状況では、乱数の生成段階で、可能な乱数の範囲を 1 ずつ拡張する必要があります。parseInt を使用して小さい値に丸めるか、Math.ceil(num) を使用して変換することができます。大きな値 (変換後は -1 が必要です)。どの方法を使用する場合でも、重要なのは乱数生成段階で範囲に 1 を加算することです

parseInt メソッドを使用します

function getRandom1(start, end) {
    var length = end - start + 1;
    var num = parseInt(Math.random() * (length) + end);
    return num;
  }
ログイン後にコピー
------。 ------------------------------------ --------------- ------------------------

場合によっては、乱数を生成するだけでは十分ではなく、指定された範囲に値を配置する必要もあります。ランダムな順序 この問題を、重複を避けるために乱数を生成し、配列に追加することで、数値のランダムな配置を実現します。

指定された範囲で乱数シーケンスを生成します。 ランダム シーケンスは、順番に配置された一連の数値要素を含むグループを介して直接実装でき、sort メソッドを呼び出し、関数を使用します。ランダムに生成された値 (正または負の場合があります) の場合、順序をスクランブルして、配列のランダムなシーケンスを取得できます。 getNum() は、順番に配置された 1 ~ 10 の数値の配列を返します。その場合、取得された numArr はランダムなシーケンスです。 1-10 の:

  var numArr = getNum().sort(function () {
        return Math.random() - 0.5;
      });
ログイン後にコピー

ランダム シーケンスを生成する独自のロジックを作成することも可能です。

乱数を格納する配列を定義し、生成後に既存の配列を検索して乱数を生成します。存在する場合、マークを false に変更すると、生成された乱数が繰り返されることを示し、マークの値は配列への追加が成功した場合、配列のインデックス (数値を示します) を決定するために使用されます。配列要素の数) がインクリメントされ、条件が満たされるとループが終了します。 5 ~ 10 の間のランダムなシーケンスを実装する例 (以下の場合は左と右が含まれます):

function getOrder(start, end) {
      var length = end - start;
      var myorder = new Array();
      var index = 0;
      while (index < length+1) {
        var flag = true;
        var num = parseInt(Math.random() * (length + 1));
        for (var i in myorder) {
          if (myorder[i] == num) {
            flag = false;
          }
        }
        if (flag == true) {
          myorder[index] = num;
          index++;
        }
      }
      alert(myorder.length);
      alert(myorder);
    }
getOrder(5, 10);
ログイン後にコピー

以降の方法はマスターできたと思います。この記事の事例を読んで、さらに興味深い情報については、PHP 中国語 Web サイトの他の関連記事に注目してください

推奨読書:

vue でフォームを自動化する方法は何ですか?

以上がJSで範囲ランダム化とシーケンスランダム化を生成する手順の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート