javascript - js实现随机数的和是一定的
PHP中文网
PHP中文网 2017-04-10 15:47:29
0
3
474

随机数的个数是随机的,但是随机数的和是恒定的?可能实现吗?

PHP中文网
PHP中文网

认证高级PHP讲师

reply all(3)
PHPzhong
function test(){
  var sum=1;
  var rm = [];
  while(true){
    var r = Math.random();
    sum = sum-r;
    if (sum>0) {
      rm.push(r);
      continue;
    }
    if (sum<0) {
      var gap = 0-sum;
      r = r-gap;
      rm.push(r);
      return rm;
    }
    if (sum==0) return rm;
  }
}

var d = test();
console.log(d);
阿神
function ran(sum) {
    var arr = [] //收集产生的随机数
    function arrSum(arr) { //数组求和函数
        var a = 0
        for (i = 0; i < arr.length; i++) {
            a += arr[i]
        }
        return a
    }
    while (arrSum(arr) < sum) { //已产生的随机数的和小于最大值时
        var max = sum - arrSum(arr) //最大为最大值与当前和的差
        arr.push(Math.floor(Math.random() * max) + 1) //继续往里填
    }
    return arr //返回填好的随机数数组
}
console.log(ran(30))
洪涛
// 产生一个和为allsum的随机数数组
// 方法1,限制随机数的最小值
function genran(allsum){
    var minval = 1;    // 小于这个值的时候就不再产生随机数了
    var arr = [];
    while(allsum>minval){
        var r = Math.random()*allsum;
        allsum -= r;
        arr.push(r);
    }
    if(allsum>0)
        arr.push(allsum);
    return arr;
}

// 方法2,限制随机数个数
function genran2(allsum){
    var maxcount = 10;    // 最多产生10个
    var arr = [];
    while(allsum>0 && maxcount>0){
        var r = Math.random()*allsum;
        allsum -= r;
        arr.push(r);
        --maxcount;
    }
    if(allsum>0)
        arr.push(allsum);
    return arr;
}


console.log(genran(100)); //测试
console.log(genran2(100)); //测试
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template