获取随机数可被16整除

时间:2011-01-12 08:49:49

标签: javascript

在数学中,我如何获得可被16整除的数字的最接近数字?

例如,我得到随机数100,我想将该数字(使用数学函数)转换为最接近100的可被16整除的数字(在这种情况下为96)

我正在尝试用JavaScript做这个,但如果我知道它的数学公式,我会很容易用任何语言做。

谢谢你, 此致

6 个答案:

答案 0 :(得分:18)

生成随机整数。乘以16。

答案 1 :(得分:14)

除以16,舍入,乘以16:

n = Math.round(n / 16) * 16;

答案 2 :(得分:5)

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);

答案 3 :(得分:3)

function closest(n) {
  var r = 0, ans = 0;

  r = n % 16

  if r < 8 {
    ans = n - r
  } else {
    ans = n + (16 - r)
  }

  return ans;
}

答案 4 :(得分:1)

一般的JS解决方案

var divisor = 16;

var lower = 0;
var upper = 100;    

var randDivisible = (Math.floor(Math.random()*(upper-lower))+lower)*divisor;
alert(randDivisible);

答案 5 :(得分:1)

以下是我理解你的问题的方法。你得到一个数字A,你必须找到一个数字B,它是16到A的最接近的倍数。

  1. 取给定的数字,“A”并将其除以16
  2. 将上一步的答案四舍五入到最接近的整数
  3. 将上一步的答案乘以16
  4. 有伪代码,希望它是你要找的东西; - )