Код, создающий матрицу со случайными значениями 0 и 1

#javascript #matrix #random

#javascript #матрица #Случайный

Вопрос:

Не могли бы вы, пожалуйста, написать js-код, который случайным образом заполняет пустую матрицу 0 или 1? Мне нужно использовать функцию Random().

Я написал этот код, и я получил сообщение об ошибке Random() не определено

 var matrix = [];


for(var y = 0; y<5; y  ){
    for(var x = 0; x<5; x  ){
        let arr = [0,1]
     matrix[y][x]= random(arr)
      matrix.push(matrix[y][x])
    }
}
 

Ответ №1:

Вы должны Math.random() , а затем использовать Math.round() , чтобы получить 0 или 1 . Во-вторых, вы должны установить matrix[y] значение в пустой массив, иначе код выдаст ошибку.

 var matrix = [];

for(var y = 0; y<5; y  ){
    matrix[y] = [];
    for(var x = 0; x<5; x  ){
      matrix[y][x]= Math.round(Math.random())
      matrix.push(matrix[y][x])
    }
}
console.log(matrix) 

Проще создать матрицу любой длины, которую вы можете использовать map() . Создайте массив заданной длины и сопоставьте его с другим массивом такой же длины, имеющим случайные значения из 0 или 1

 const getMatrix = len => [...Array(len)].map(x => [...Array(len)].map(b => Math.round(Math.random())));

let res = getMatrix(5);
console.log(res) 

Для разной длины и ширины используйте два параметра.

 const getMatrix = (l,w) => [...Array(l)].map(x => [...Array(w)].map(b => Math.round(Math.random())));

let res = getMatrix(2,3);
console.log(res) 

Ответ №2:

Вы должны использовать Math.round(Math.random()) .

Ответ №3:

Простой способ сделать это с помощью ES6:

 const arr = new Array(5).fill().map(() => new Array(5).fill().map(() => Math.round(Math.random())));

console.log(arr); 

Вы должны использовать этот fill() метод раньше map() , иначе вы получите неопределенные значения.

«Классический» способ сделать это с использованием вашего фрагмента кода будет похож на то, что вы пробовали, с добавлением стандартного встроенного объекта Math , который имеет random() метод, а также round() для получения целочисленных значений. Если вам нужна матрица (2D-массив), то вам нужно будет вставить массив в каждую строку, в противном случае вы получите простой массив.

 var matrix = [];

for(var y = 0; y < 5; y  ) {
    const row = [];
    for(var x = 0; x < 5; x  ) {
      row.push(Math.round(Math.random()));
    }
    matrix.push(row);
}

console.log(matrix);