使用javascript使用给定参数用随机值填充数组
我试图用一个数组填充一个给定数量的元素(该参数在函数中说明),因为有一个startValue和endValue,例如用5个数字填充myArray 在5到15之间使用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
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;jfor(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);