簡體   English   中英

獲取隨機數可被16整除

[英]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的最接近的可能倍數。

  1. 取給定的數字“A”並除以16
  2. 將上一步的答案四舍五入到最接近的整數
  3. 將上一步的答案乘以16

有偽代碼,希望它是你正在尋找的東西;-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM