我正在尝试使用给定数量的元素填充数组(此函数在函数中声明),假设有一个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是数组中想要的元素数量_我不知道如何实现它。提前谢谢。
答案 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
)值的包容性产生混淆。在这方面,min
和max
名称前缀更加清晰。