1.underscore里面有一个方法_.random,定义如下:
// Return a random integer between min and max (inclusive).
// integer : {-1,0,1} 负整数 、 0 、正整数
// https://zh.wikipedia.org/wiki/%E6%95%B4%E6%95%B0
// [x,y]包括y,注意与Math.random的区别
_.random = function(min, max) {
if (max == null) {
max = min;
min = 0;
}
return min + Math.floor(Math.random() * (max - min + 1));
};
再传入正整数的时候没有问题:
带入10,(max=10,min=0)
return 0 + Math.floor(Math.random()*(10-0)+1);
return 0 + Math.floor( [0,1)*11 );
return 0 + Math.floor( [0,11) );
return 0 + [0,10];
return [0,10]
会生成一个0-10包括0,10之间的整数
但是如果传入一个-10(max = -10,min = 0):
return 0 + Math.floor(Math.random()*(-10-0)+1);
return 0 + Math.floor( [0,1)* -9 );
return 0 + Math.floor( [0,-9) );
return 0 + [0,-9];
return [0,-9]
这样只会生成0,-9包括0,-9之间的整数,没有-10。
这样的话:
Return a random integer between min and max (inclusive)
返回一个min到max(包括)之间的一个随机整数
上面这句话就有问题了?负数的时候,无法生成最小的边界值。不知道我这样理解对不对,望指正!
伊谢尔伦2017-04-11 13:12:28
你弄反了max和min
max = 0, min = -10
return min + Math.floor(Math.random() * (max - min + 1));
return -10 + Math.floor(Math.random() * (0 - (-10) + 1));
return -10 + Math.floor([0,1) * 11);
return -10 + [0, 10];
return [-10, 0]
这样毫无问题