Javascriptの一意の乱数ジェネレーターが一意の番号を生成していません

ダメージ

重複なしで数値を生成することになっている新しい乱数ジェネレーターを試していますが、それを自分のページに適用しようとすると、多くの重複が生成されます。少なくとも60%の確率で、重複が1回、3回、2セットの重複がありました。

1から100までの一意の乱数生成するからの答えを試していますが、20個に制限してもそのまま機能するようです。重複番号がゼロの状態で40回実行しました。それを既存の関数に入れようとすると、バラバラになります。私がここで何を見逃しているのか分かりますか?これは私の前の質問の続きですランダムな画像でテーブルを埋める

/* The part of what each image url has in common
   ⍟ var base = 'images/Image_'
   */
var base = 'images/Image_';
var suff = '.jpg';

function randomCellBG(base) {

  // Reference the <table>
  var T = document.getElementById('mainTable');

  /* Collect all .cell into a NodeList and convert
  || it into an array
  */
  var cellArray = Array.from(T.querySelectorAll('.cell'));

  // map() the array; run a function on each loop...
  cellArray.map(function(cel, idx) {

    // Get a random number 1 - 9
    var arr = []
    while (arr.length < 9) {
      var ran = Math.ceil(Math.random() * 40)
      if (arr.indexOf(ran) > -1) continue;
      arr[arr.length] = ran;
    }

    /* Concatenate base and random number to form
    || a string of a url of an image
    ⍟ result: "images/Image_08.jpg"
    */
    var img = base + ran.toString() + suff;

    /* Assign that url as the value to the 
    || backgroundImage property of the .cell
    || in current iteration
    */
    cel.innerHTML = "<img src='" + img + "'/>";

  });

}
デビッド・バンブセック

私が正しく理解している場合は、次のことが必要です。1。に変更mapforEachます。2。forEach関数から既に生成された数値を保存する配列を移動する必要があります。3。数値ジェネレータループを変更します。

/* The part of what each image url has in common
⍟ var base = 'images/Image_'
*/
var base = 'images/Image_';
var suff = '.jpg';

function randomCellBG(base) {

  // Reference the <table>
  var T = document.getElementById('mainTable');

  /* Collect all .cell into a NodeList and convert
  || it into an array
  */
  var cellArray = Array.from(T.querySelectorAll('.cell'));

  // initialize the array
  var arr = []
  // map() the array; run a function on each loop...
  cellArray.forEach(function (cel, idx) {

    // generate numbers 1-40 and check if they were already generated
    do {
      var ran = Math.ceil(Math.random() * 40)
    } while (arr.indexOf(ran) > -1);
    //save the newly generated unique number
    arr[arr.length] = ran;

    /* Concatenate base and random number to form
    || a string of a url of an image
    ⍟ result: "images/Image_08.jpg"
    */
    var img = base + ran.toString() + suff;

    /* Assign that url as the value to the 
    || backgroundImage property of the .cell
    || in current iteration
    */
    cel.innerHTML = "<img src='" + img + "'/>";
  });
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Python乱数新しい番号を使用する前の一意の番号ジェネレータ

分類Dev

Factory_Girlが一意のレコードを生成していません

分類Dev

12桁の一意の分散乱数ジェネレータ

分類Dev

Oracle で 6 桁の一意の乱数ジェネレーター シーケンスを生成する

分類Dev

angleJsの一意のフィルター-一意の配列の長さを取得していません

分類Dev

RDSを使用しないAWSの一意のシーケンス番号ジェネレーター?

分類Dev

一意の乱数の2列に5000レコードを生成します

分類Dev

データベースに保存する一意の乱数を生成します

分類Dev

コンパレータを使用してConcurrentSkipListSetのは、新しい一意の値を追加しません

分類Dev

乱数を生成しますが、複製せずに一意の番号で生成する必要があります

分類Dev

一連の一意の乱数を生成しようとしています

分類Dev

mysqlテーブルにないphpの一意の乱数-チェックしてから生成します

分類Dev

Javascriptは文字列に基づいて一意の番号を生成します

分類Dev

Django:一意のIDジェネレーター

分類Dev

Ruby on RailsのPostgresqlの一意の非反復乱数用の線形合同ジェネレーター?

分類Dev

一意のXMLスキーマは一意性をチェックしません

分類Dev

データフレームを使用してPythonで一意のサービスID番号を生成する方法

分類Dev

cプログラムの乱数ジェネレーターが正しい乱数を生成していません

分類Dev

jQueryは短い一意の番号を生成します

分類Dev

一意のデータフレームを使用していますが、行は「1D配列のような」リストではありません

分類Dev

範囲内の一意の乱数を生成して保存する

分類Dev

固定長のPostgresqlで一意の乱数を生成します

分類Dev

一意の乱数を生成する

分類Dev

一意の乱数を生成する

分類Dev

Laravelは一意の値(データベース)を検証していません

分類Dev

一意の乱数を生成し、重複をチェックします

分類Dev

一意の乱数を作成するlaravelミューテーターは実行されません

分類Dev

N未満の一意の番号の固定シーケンスをエンコードして生成します

分類Dev

データベースオブジェクトごとに一意の文字列を生成します

Related 関連記事

  1. 1

    Python乱数新しい番号を使用する前の一意の番号ジェネレータ

  2. 2

    Factory_Girlが一意のレコードを生成していません

  3. 3

    12桁の一意の分散乱数ジェネレータ

  4. 4

    Oracle で 6 桁の一意の乱数ジェネレーター シーケンスを生成する

  5. 5

    angleJsの一意のフィルター-一意の配列の長さを取得していません

  6. 6

    RDSを使用しないAWSの一意のシーケンス番号ジェネレーター?

  7. 7

    一意の乱数の2列に5000レコードを生成します

  8. 8

    データベースに保存する一意の乱数を生成します

  9. 9

    コンパレータを使用してConcurrentSkipListSetのは、新しい一意の値を追加しません

  10. 10

    乱数を生成しますが、複製せずに一意の番号で生成する必要があります

  11. 11

    一連の一意の乱数を生成しようとしています

  12. 12

    mysqlテーブルにないphpの一意の乱数-チェックしてから生成します

  13. 13

    Javascriptは文字列に基づいて一意の番号を生成します

  14. 14

    Django:一意のIDジェネレーター

  15. 15

    Ruby on RailsのPostgresqlの一意の非反復乱数用の線形合同ジェネレーター?

  16. 16

    一意のXMLスキーマは一意性をチェックしません

  17. 17

    データフレームを使用してPythonで一意のサービスID番号を生成する方法

  18. 18

    cプログラムの乱数ジェネレーターが正しい乱数を生成していません

  19. 19

    jQueryは短い一意の番号を生成します

  20. 20

    一意のデータフレームを使用していますが、行は「1D配列のような」リストではありません

  21. 21

    範囲内の一意の乱数を生成して保存する

  22. 22

    固定長のPostgresqlで一意の乱数を生成します

  23. 23

    一意の乱数を生成する

  24. 24

    一意の乱数を生成する

  25. 25

    Laravelは一意の値(データベース)を検証していません

  26. 26

    一意の乱数を生成し、重複をチェックします

  27. 27

    一意の乱数を作成するlaravelミューテーターは実行されません

  28. 28

    N未満の一意の番号の固定シーケンスをエンコードして生成します

  29. 29

    データベースオブジェクトごとに一意の文字列を生成します

ホットタグ

アーカイブ