我正在尝试使用For循环将随机整数(从0-2)添加到变量指定的次数。我遇到的问题是,循环在每次循环时都没有使用新的随机数,因此,例如,如果我传入9,我只会得到0、9或18。
我希望对象返回带有不同数字值的键“ a”和“ b”。
这是我的随机数获取器:
function randomNumber(min, max){
min = Math.ceil(0);
max = Math.floor(3);
return Math.floor(Math.random() * (max - min)) + min;
}
这是我调用randomNumber()的函数:
function objMaker(cb, num){
let obj = {
a: 0,
b: 0
}
for (var i = 0; i < num; i++) {
obj.a += cb;
obj.b += cb;
}
return obj;
}
objMaker(randomNumber(), 9)
// returns obj { a:0, b:0}
// or obj { a:9, b:9}
// or obj { a:18, b:18}
我是一个初学者,由于无法找到任何相关信息,因此感谢您的帮助。预先感谢。
如果我理解正确,您想在for
循环的每次迭代处生成一个新的随机数。如果是这种情况,那么您也需要在每次迭代时都调用您的randomNumber()
:
function randomNumber() {
const min = Math.ceil(0);
const max = Math.floor(3);
return Math.floor(Math.random() * (max - min)) + min;
}
function objMaker(num){
let obj = {
a: 0,
b: 0
}
for (var i = 0; i < num; i++) {
obj.a += randomNumber();
obj.b += randomNumber();
}
return obj;
}
function test() {
console.log(objMaker(9));
}
<button id=generate onclick='test()'>generate</button>
如果写入objMaker(randomNumber(), 9)
,它将生成一次0、1或2,然后将其作为cb
传递给objMaker
。因此,在for
循环内,它总是将相同的数字相加9次。
如果您使用0或1作为最小值,则无需指定(仅指定max就足够了)。假设max为2],以下函数将起作用
function randomNumber(max){ return Math.round(Math.random() * max); }
希望这会有所帮助。