我正在尝试构建一个快速的伪随机数生成器,它具有唯一的数字,但有一个扭曲。挑选的数字来自逐渐增加的样本集,即。 (1-20)然后(2-21)...但由于我有限的编码经验,我得到一些重复。使用Google Script,有没有办法检查另一个数组中是否存在特定的数组元素?
function temp3() {
var ss =
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet6");
var range = ss.getRange("b14:av14");
var m = 0
var picks = [];
for(var j = 1; j < 48; j++) {
var array1 = [1+m, 2+m, 3+m, 4+m, 5+m, 6+m, 7+m, 8+m, 9+m, 10+m,
11+m, 12+m, 13+m, 14+m, 15+m, 16+m, 17+m, 18+m, 19+m, 20+m];
shuffleArray(array1);
picks.push(array1[0]);
m = m + 1
}
ss.getRange(16, 2, 1, 47).setValues([picks]);
}
答案 0 :(得分:0)
有很多方法可以做到这一点,但是如果你不想过多修改你当前的方法,可以添加一个单独的函数来检查选择是否已包含你的号码。如果它确实删除了第一个元素并再次运行该函数。如果没有,请添加到选秀权。
function temp3() {
var ss =
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet6");
var range = ss.getRange("b14:av14");
var m = 0
var picks = [];
for (var j = 1; j < 48; j++) {
var array1 = [1+m, 2+m, 3+m, 4+m, 5+m, 6+m, 7+m, 8+m,
9+m, 10+m, 11+m, 12+m, 13+m, 14+m, 15+m,
16+m, 17+m, 18+m, 19+m, 20+m];
shuffleArray(array1);
picks = addToPicks(array1,picks)
m = m + 1
}
ss.getRange(16, 2, 1, 47).setValues([picks]);
}
function addToPicks(arr,picks) {
if (picks.indexOf(arr[0]) === -1) {
picks.push(arr[0])
return picks
}
arr.shift();
return addToPicks(arr,picks);
}
您也可以在shuffleArray函数中执行此操作。
顺便说一句,不是调用你的shuffleArray函数,而是尝试检出Math.random's documentation.这里有一个函数可以在两个数字之间生成一个随机整数的例子,这对你来说可能比洗牌更有帮助。 / p>
function getRandomArbitrary(min, max) {
return Math.random() * (max - min) + min;
}