Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取可被16整除的随机数_Javascript - Fatal编程技术网

Javascript 获取可被16整除的随机数

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整除的数的最近数

例如,我得到了随机数100,我想把这个数字(使用数学函数)转换成最接近100的数字,它可以被16整除(在本例中是96)

我正试图用JavaScript来做这件事,但如果我知道它的数学公式,我会很容易用任何语言来做

谢谢,,
生成一个随机整数。将其乘以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的最接近倍数

  • 取给定的数字“A”除以16
  • 将上一步的答案四舍五入到最接近的整数
  • 将上一步的答案乘以16

  • 这是伪代码,希望这就是你要找的;-)

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