在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))];
第一种方法只创造唯一值,第二种方式似乎根本不起作用。有任何想法吗?这样做的最佳方式是什么?
答案 0 :(得分:5)
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;}();
这是对“任何想法”的回答? 我不确定这是“最好的方式是什么?”的答案。