使用给定参数使用javascript填充具有随机值的数组

时间:2014-09-07 19:11:59

标签: javascript arrays random

我正在尝试使用给定数量的元素填充数组(此函数在函数中声明),假设有一个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是数组中想要的元素数量_我不知道如何实现它。提前谢谢。

4 个答案:

答案 0 :(得分:0)

for(j=0;j<=num;j+=1){
    var k = Math.floor(Math.random()* (endValue-startValue) + startValue);
    localArray.push(k);
}

答案 1 :(得分:0)

你弄错了方法:

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

  

对于j而j&lt; num增加1

然后得到随机数,你也错了。 Math.random()返回0到1之间的数字。这意味着您可以执行以下操作:

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

  

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

一种可能的方法:

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名称前缀更加清晰。