Populating a 2D array in Javascript with random numbers

前端 未结 3 1068
日久生厌
日久生厌 2021-01-27 11:15

I\'m trying to populate a 2D array in javascript with random numbers. Although each column in the array is random, each row is identical which is not what I want (see image bel

相关标签:
3条回答
  • 2021-01-27 11:27

    This can be accomplished using a combination of Array.prototype.fill() and Array.prototype.map():

    new Array(rows).fill([]).map(x => Array(columns).fill(0).map(x => x + Math.floor(Math.random() * (max - min)) + min));
    

    For example, we can create a 100 by 964 column array full of random numbers between 900 and 1000 using the following:

    new Array(100).fill([]).map(x => Array(964).fill(0).map(x => x + Math.floor(Math.random() * (1000 - 900)) + 900));
    
    0 讨论(0)
  • 2021-01-27 11:34

    The trouble is that you're not initializing the row. It's easily fixed:

    cols = 5;
    rows = 10;
    
    front = new Array(cols)// .fill(new Array(rows));
    
    // Loop through Initial array to randomly place cells
    for(var x = 0; x < cols; x++){
      front[x] = [];  // ***** Added this line *****
      for(var y = 0; y < rows; y++){
        front[x][y] = Math.floor(Math.random()*5);
      }
    }
    console.table(front) ; // browser console only, not StackOverflow's

    Update

    This is a cleaner version, somewhat similar to the one from Code Maniac, but simplified a bit:

    const randomTable = (rows, cols) => Array.from(
      {length: rows}, 
      () => Array.from({length: cols}, () => Math.floor(Math.random() * 5))
    )
    
    console.table(randomTable(10, 5)) // browser console only, not StackOverflow's

    0 讨论(0)
  • 2021-01-27 11:39

    One way of doing this using map

    let op = new Array(10)
             .fill(0)
             .map(e=>(new Array(5)
             .fill(0)
             .map(e=> Math.floor(Math.random() * 5))))
    
    console.log(op)

    0 讨论(0)
提交回复
热议问题