0

我在下面有一个代码,它在 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);  

}
4

2 回答 2

4

请阅读马特对这个问题的回答:

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

于 2013-10-03T14:01:32.150 回答
0

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

于 2013-10-03T14:07:08.640 回答