Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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使用给定参数用随机值填充数组_Javascript_Arrays_Random - Fatal编程技术网

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

使用javascript使用给定参数用随机值填充数组,javascript,arrays,random,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); localAr

我试图用一个数组填充一个给定数量的元素(该参数在函数中说明),因为有一个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);
}
函数populateArray(num、startValue、endValue){
var j,
localArray=[];

对于(j=startValue;j
for(j=0;j您用错误的方式得到它:

for循环应该是所需的数量,因此在伪代码中类似于此

对于j,而j 然后,要获取随机数,您也有错误。
Math.random()
返回一个介于0和1之间的数字。这意味着您可以执行以下操作:

两个数字之间的空格是
Math.abs(endValue-startValue)
。绝对值不是必需的,只是为了防止你把数字混在一起。然后你必须这样做:

将随机值乘以空格,然后将起始值作为偏移量相加。然后可以使用floor删除小数

函数populateArray(num、startValue、endValue){
var j,
localArray=[];
对于(j=0;j一种可能的方法:

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);
函数createRandomArray(长度、最小值、最大值){
//断言(最小值=0)
var-arr=[];
var乘数=最大值-最小值+1;
while(长度--){
arr.push(minValue+Math.floor(Math.random()*乘数));
}
返回arr;
}
//这就是如何在您的案例中使用它:
var randArr=createRandomArray(5,5,15);
在您的解决方案中,您以某种方式结束了使用范围开始和结束数字来定义结果数组的大小(在
for
循环中)

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


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

1)生成一个介于5和15之间的随机数;2)将其放入一个数组;3)再重复1)和2)4次。你到底有什么问题?
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));
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);