#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);