不要在Jquery中重复随机数

时间:2013-10-03 13:57:56

标签: jquery

我在下面有一个代码,它在1到6之间的随机元素上做动画。但是这里它会重复一个数字x次。

如何更改此代码以不重复随机数?

x = 6;
$("#best_brands > .flow > img").each(function() {

    var timer = Math.floor(Math.random() * 300) + 600
    var number = 1 + Math.floor(Math.random() * x);
    fadeBrands(timer, number); 

});

function fadeBrands(timer, number) {

        $('#best_brands > .flow > img:lt("'+number+'")').animate({
            opacity: 1
        }, timer);  

}

2 个答案:

答案 0 :(得分:4)

请阅读Matt对this question的回答:

var grabBag = [1,2,3,4,5,6,7,8,9,10];

// randomize order of elements with a sort function that randomly returns -1/0/1
grabBag.sort(function(xx,yy){ return Math.floor(Math.random() * 3) - 1; })

function getNextRandom(){
    return grabBag.shift();
};

var originalLength = grabBag.length;
for(var i = 0; i < originalLength .length; i++){
    console.log(getNextRandom());
}

也可以考虑阅读这个问题:Unique Random Number Generator Javascript

答案 1 :(得分:0)

还有另一种方法可以做到这一点: 每次获得一个随机数时,您都可以将其存储在usedNumbers数组中,并检查下一个随机数是否每次都存在usedNumbers数组。