我想获得随机唯一数字的数组。
我为
制作周期var row = [];
var count = 10;
function getRandomArbitary(min, max) {
return Math.random() * (max - min) + min;
}
function searchRandom() {
var rdm = Math.floor(getRandomArbitary(1, 20));
for (var i = 0; i < row.length; i++) {
if (rdm == row[i]) {
searchRandom();
}
}
row.push(rdm);
}
然后,如果我想要数组中的10个数字,我将进行下一个周期
for (var i = 0; i < count; i++) {
searchRandom();
}
console.log(row);
但它没有用(
答案 0 :(得分:1)
仅仅让函数将选项作为参数并返回数组会更容易吗?
function randomArray(count, min, max) {
if (count > (max - min)) return;
var arr = [], t;
while (count) {
t = Math.floor(Math.random() * (max - min) + min);
if (arr.indexOf(t) === -1) {
arr.push(t);
count--;
}
}
return arr;
}
console.log(randomArray(10, 1, 20));
&#13;
答案 1 :(得分:0)
我想,我没有在我的系统上运行它 但这应该有用
{% block collection_row %}<div>I Love Symfony! (or just use parent())</div>{% endblock collection_row %}
注意嵌套function searchRandom() {
var rdm = Math.floor(getRandomArbitary(1, 20));
for (var i = 0; i < row.length; i++) {
if (rdm == row[i]) {
searchRandom();
return;
}
}
row.push(rdm);
}
这将阻止您进入不正确的情况,例如,直到现在行已经[1,2]。而下一个随机数是1;
答案 2 :(得分:0)
在这种情况下你为什么递归调用搜索方法?
你可以从1循环到len(或0到len-1),并等到你生成一个简单的while循环不存在的随机数。这是一个例子
var generateRandomArray = function(len, min, max) {
if(len> (max-min)) {return;}
var array = [],
getRandomArbitary = function(min, max) {
return Math.floor(Math.random() * (max - min) + min);
},
idx;
for (idx = 0; idx < len; idx++) {
var num;
while (array.includes(num = getRandomArbitary(min,max))) {}
array.push(num)
}
return array;
}
console.log('Random Array of 5 element from 10 to 20: ', generateRandomArray(5, 10,20))
&#13;