我正在尝试使用Javascript获取0到30之间的10个随机数的列表。到目前为止一切顺利,但我有另一个具有特定数字的清单(0,5,10,11,12,13,15,16,17,18,20,22,23)。
只有最多随机数组中允许使用此列表的4个数字。这让我很疯狂,因为我不知道要把它结合起来。
我很感激任何帮助。谢谢。
这是我的代码:
<script language="JavaScript" type="text/javascript">
<!--
function random(min, max, i, filter) {
var array = {};
var zufall = [];
while( i ) {
var rnd = Math.floor(Math.random() * (max - min + 1)) + min;
if( !array[rnd] ) {
array[rnd] = true;
i--;
zufall.push(rnd);
}
}
return zufall;
}
var filter = new Array(0,5,10,11,12,13,15,16,17,18,20,22,23);
console.log("Random: " + random(0,30,10,filter) );
//-->
</script>
答案 0 :(得分:1)
查询提案。
function random(min, max, i, filter) {
var result = [],
filterCount = 0,
rnd;
while (i) {
rnd = Math.floor(Math.random() * (max - min + 1)) + min;
if (~result.indexOf(rnd)) {
continue;
}
if (~filter.indexOf(rnd)) {
if (filterCount >= 4) {
continue;
}
filterCount++;
}
result.push(rnd);
i--;
}
return result;
}
var filter = [0, 5, 10, 11, 12, 13, 15, 16, 17, 18, 20, 22, 23],
zufall = random(0, 30, 10, filter);
document.write('<pre>' + JSON.stringify(zufall, 0, 4) + '</pre>');