如何在jquery中从数组值100中选择随机5值?

时间:2010-08-31 19:48:09

标签: jquery

我在一个数组中有100个值,但我需要在每次单击一个按钮时随机选择5个值,并且我有一个值,例如a = 10,这个值不应该在5个选定值中。

我尝试了不同的方式,但我无法在jquery中执行此操作。请任何帮助我。

3 个答案:

答案 0 :(得分:2)

Dunno,如果它必须是jQuery,但这里是一个纯粹的JS解决方案。 “input”是包含100个值的数组。

var output = [];

for (var i = 0, len = input.length; i < 5; ++i) {
 var randomIndex = Math.floor(Math.random() * input.length);

 if (input[randomIndex] != 10) {
  output.push(input[randomIndex);
 }
}

答案 1 :(得分:1)

以下代码可能有所帮助。 calculateRandoms函数每次从数字数组中计算5个不同的随机数。随机数不能是excludedNumber的值。您可以更改randomCount变量以修改calculateRandoms将生成的随机数的数量。

var excludedNumber = 10;
var randomCount = 5;
var numbers = [];
var randoms = [];
var vPool="";

// initialize array, fill it from 0 to 99
for (var i = 0; i < 100; i++) numbers.push(i + 1);
$(document).ready(function() {
    $("#mybutton").click(function() {
        calculateRandoms(randomCount);             
    });
});
function calculateRandoms(c) { 
    randoms = [];
    for (var i = 0; i < c; i++) {
        var rnd = excludedNumber;
        while (rnd == excludedNumber && $.inArray(rnd, numbers)){
            rnd = numbers[Math.floor(Math.random() * numbers.length)];
            randoms.push(rnd);
        }
    }
    vPool='';
    $.each(randoms, function(i, val) {  
        vPool+=val + "<br />";
        $("#res").html(vPool);
    });
    //alert(randoms);
    //$("#res").html(randoms);
    //console.log(randoms);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input type="button" id="mybutton" value="Generate" />
<div id="res"></div>

答案 2 :(得分:0)

您也可以随机使用原始数组

function reorder(src) {
    return src.sort(function (a, b) { return 1 - (Math.random() * 2); });
}

你可以像这样获得前5名:

yourArray = reorder(yourArray).slice(0, 5);