[英]Getting random number divisible by 16
在數學中,如何獲得可被16整除的最接近數字?
例如,我得到隨機數100,我想將該數字(使用數學函數)轉換為最接近100的可被16整除的數字(在本例中為96)
我正在嘗試用JavaScript做這個,但如果我知道它的數學公式,我會很容易用任何語言來做。
謝謝,問候
生成隨機整數。 乘以16。
除以16,舍入,乘以16:
n = Math.round(n / 16) * 16;
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);
function closest(n) {
var r = 0, ans = 0;
r = n % 16
if r < 8 {
ans = n - r
} else {
ans = n + (16 - r)
}
return 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的最接近的可能倍數。
有偽代碼,希望它是你正在尋找的東西;-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.