创建随机Ints的JavaScript数组

时间:2014-02-20 04:05:57

标签: javascript underscore.js

在Python中,如果我想要一个特定大小的随机数组,我会这样做:

random_array = numpy.random.randint(20, size=10)

在Javascript中,我无法找到一个好的单行方式来做到这一点。我尝试使用UnderscoreJS:

random_array = _.sample(_.range(20), 10);

我也尝试过使用Javascript 1.7数组理解和UnderscoreJS:

random_array = [Math.floor(Math.random() * 20) for (x of _.range(10))];

第一种方法只创造唯一值,第二种方式似乎根本不起作用。有任何想法吗?这样做的最佳方式是什么?

2 个答案:

答案 0 :(得分:5)

看起来_.times_.random会很有用:

var random_array = _.times(10, _.random.bind(_, 0, 19));

您还可以围绕_.random创建一个小辅助函数:

function randomIntFactory(max) {
    // _.random's max value is *inclusive* (unlike the Python version)
    // so we subtract one
    return _.random.bind(_, 0, max - 1);
}

var random_array = _.times(10, randomIntFactory(20));

注意:您也可以使用下划线_.bind代替原生.bind

答案 1 :(得分:2)

如果你只想要一个(相当长的)javascript单行代码而不用下划线/其他库:

var random_array = function (){var a=[]; for(var i=0;i<10;i++){a[i]=Math.floor(Math.random()*20);};return a;}();

这是对“任何想法”的回答? 我不确定这是“最好的方式是什么?”的答案。