【问题标题】:populate an array with random values with javascript using given parameters [closed]使用给定参数用javascript填充随机值的数组[关闭]
【发布时间】:2014-09-07 19:11:59
【问题描述】:

假设有一个 startValue 和 endValue 例如用 5 个数字填充 myArray 5 到 15 之间。

function populateArray(num, startValue, endValue){
var j,
    localArray=[];
for(j=startValue;j<=endValue;j+=1){
    var k = Math.floor(Math.random()* j);
    localArray.push(k);
}
console.log(localArray);
}

其中 num 是数组中想要的元素数 _ 我不知道如何实现。提前致谢。

【问题讨论】:

  • 1) 生成一个5到15之间的随机数; 2)将其推入数组; 3) 再重复 1) 和 2) 4 次。
  • 你到底遇到了什么问题?

标签: javascript arrays random


【解决方案1】:

Live Demo

function populateArray(num, startValue, endValue){
    var j,
        localArray=[];
    for(j=0; j <= num; j++){
        var k = randomIntFromInterval(startValue, endValue);
        localArray.push(k);
    }
    return localArray; 
}

//From: http://stackoverflow.com/a/7228322/402706
function randomIntFromInterval(min,max)
{
    return Math.floor(Math.random()*(max-min+1)+min);
}

console.log(populateArray(10, 8, 12));

【讨论】:

    【解决方案2】:
    for(j=0;j<=num;j+=1){
        var k = Math.floor(Math.random()* (endValue-startValue) + startValue);
        localArray.push(k);
    }
    

    【讨论】:

      【解决方案3】:

      你弄错了:

      你的 for 循环应该是你需要的数量,因此在伪代码中是这样的。

      对于 j 而 j

      那么要得到随机数,你也弄错了。 Math.random() 返回一个介于 0 和 1 之间的数字。这意味着您可以执行以下操作:

      两个数字之间的空格是Math.abs(endValue - startValue)。绝对值不是必需的,但以防万一您混合数字。然后你必须做这样的事情:

      将随机值乘以空格并添加 startValue 作为偏移量。然后你可以使用 floor 删除小数。

      【讨论】:

        【解决方案4】:

        一种可能的方法:

        function createRandomArray(length, minValue, maxValue) {
          // assert(minValue <= maxValue)
          // assert(length >= 0)
        
          var arr = [];
          var multiplier = maxValue - minValue + 1;
        
          while (length--) {
            arr.push(minValue + Math.floor(Math.random() * multiplier));
          }
        
          return arr;
        }
        
        // and that's how it can be used in your case:
        var randArr = createRandomArray(5, 5, 15);
        

        在您的解决方案中,您不知何故最终使用范围开始和结束数字来定义结果数组的大小(在for 循环中)。

        这里有两个旁注。首先,当您需要严格执行循环N次时,可以将for循环替换为while (n--)一次。我经常使用后者来区分这些N-times 案例。

        其次,在处理范围时,通常会混淆其end(有时是start)值的包容性。 minmax 名称前缀在这方面要清楚得多。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-12-25
          • 2011-01-23
          • 2020-07-16
          • 1970-01-01
          相关资源
          最近更新 更多