关于underscore _.random 负数取随机数的问题?

发布于 2022-09-03 23:46:32 字数 1093 浏览 13 评论 0

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(包括)之间的一个随机整数

上面这句话就有问题了?负数的时候,无法生成最小的边界值。不知道我这样理解对不对,望指正!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

下雨或天晴 2022-09-10 23:46:32

你弄反了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]

这样毫无问题

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文