He estado tratando de portar la funcionalidad de
random.sample(range(0, 6), 2)a javascript desde python usando esta función:
function randomIntFromInterval(range, n) { var sample = []; for(var i=0; i<n; i++) { sample.push(range.splice(Math.random()*range.length,1)); } return sample; }Sin embargo estoy obteniendo este resultado:
[[[2], [3]], [[1], [2]], [[6], [1]], [[4], [3]], [[2], [1]], [[6], [2]], [[0], [2]], [[1], [6]], [[1], [3]], [[6], [5]]]`En lugar de algo como esto:
[[2, 3], [1, 2], [6, 1], [4, 3], [2, 1], [6, 2], [0, 2], [1, 6], [1, 3], [6, 5]]¿Algun consejo?
EDITAR: este es el código que estoy usando para llamar a la función
var randomizedOff = [] while (z < 10){ randx = randomIntFromInterval([0,1,2,3,4,5,6],2) randomizedOff.push(randx) z++ }Esto sucede porque está utilizando un splice que siempre devuelve una matriz, use [0] para obtener el elemento
function randomIntFromInterval(range, n) { var sample = []; for(var i=0; i<n; i++) { sample.push(range.splice(Math.floor(Math.random() * range.length), 1)[0]); } return sample; }No está claro si el resultado del ejemplo son varias llamadas de la función en una matriz o solo una.
slice() devuelve una matriz de todos los elementos que se eliminaron de la matriz. Entonces, si elimina un elemento, obtiene una matriz con un elemento.
Simplemente puede indexarlo con [0] para extraer el elemento de la matriz.
function randomIntFromInterval(range, n) { var sample = []; for(var i=0; i<n; i++) { sample.push(range.splice(Math.random()*range.length,1)[0]); } return sample; }