Javascript 获取可被16整除的随机数
在数学中,如何获得一个可被16整除的数的最近数 例如,我得到了随机数100,我想把这个数字(使用数学函数)转换成最接近100的数字,它可以被16整除(在本例中是96) 我正试图用JavaScript来做这件事,但如果我知道它的数学公式,我会很容易用任何语言来做 谢谢,,Javascript 获取可被16整除的随机数,javascript,Javascript,在数学中,如何获得一个可被16整除的数的最近数 例如,我得到了随机数100,我想把这个数字(使用数学函数)转换成最接近100的数字,它可以被16整除(在本例中是96) 我正试图用JavaScript来做这件事,但如果我知道它的数学公式,我会很容易用任何语言来做 谢谢,, 生成一个随机整数。将其乘以16。函数最近(n){ function closest(n) { var r = 0, ans = 0; r = n % 16 if r < 8 { ans = n -
生成一个随机整数。将其乘以16。
函数最近(n){
function closest(n) {
var r = 0, ans = 0;
r = n % 16
if r < 8 {
ans = n - r
} else {
ans = n + (16 - r)
}
return ans;
}
var r=0,ans=0;
r=n%16
如果r<8{
ans=n-r
}否则{
ans=n+(16-r)
}
返回ans;
}
通用JS解决方案
var divisor = 16;
var lower = 0;
var upper = 100;
var randDivisible = (Math.floor(Math.random()*(upper-lower))+lower)*divisor;
alert(randDivisible);
我是这样理解你的问题的。给你一个数字a,你必须找到一个数字B,它可能是16到a的最接近倍数
这是伪代码,希望这就是你要找的;-) 除以16,四舍五入,然后乘以16:
n = Math.round(n / 16) * 16;
或者如果需要速度,将其移动4:
myNum我认为这不是他想要的?我得到一个随机数。然后我需要得到与随机数最接近的数字,它可以被16整除。这个解决方案不是生成一个随机整数,然后乘以16吗?如果你读了这个问题,他正在生成一个随机数,根据生成的随机数,找出与该随机数最接近的可被16整除的数。。。至少我是这样理解的……我可能对标题不太清楚,但我想我在课文中正确地解释了我自己,举个例子,我不明白你的“小于8=减法,大于/等于/等于8=加法”,如果总是减法就行,但如果我做加法就不行。哦,对不起,这是我的错。现在更新。是的,如果我总是减去它,它现在就工作了。有什么区别?我的意思是,如果剩下的大于8(一半),它会得到最高的数字,而不是总是使用最低的?正如你的问题所说,你想要最接近的数字,对吗?考虑110的情况,余数R=14,所以<代码> 110 - 14=96 < /代码>,<代码> 110 +(16-14)=112 < /代码>。112比96更接近,对吗?这是可行的,但我不明白为什么你要上下取整,如果其余的大于8,你就用“上一轮”来得到结果。我需要这两个数字才能得到与生成的随机数最接近的数。基本上,如果余数大于或等于半个点(16的一半是8),那么我将使用天花板而不是地板,并将其乘以16得到最接近的数字。@user572420:他这样做是为了得到与round
方法返回的结果相同的结果。我不知道为什么要避免round
方法,不过…哈哈。。。我的大脑一定不工作了。。。是的,数学。圆形就行了,而且肯定要简单得多:)
function GetRandomNumberBetween(lo, hi) {
return Math.floor(lo + Math.random() * (hi - lo));
}
Number.prototype.FindClosestNumberThatIsDivisibleBy = function(n) {
return Math.round(this / n) * n; //simplify as per Guffa
/* originally:
var c = Math.ceil(n);
var f = Math.floor(n);
var m = num % n;
var r = f * n;
if (m > (n / 2))
r = c * n;
return r;
*/
};
var r = GetRandomNumberBetween(10, 100);
var c = r.FindClosestNumberThatIsDivisibleBy(16);