jquery js 不重复随机数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery js 不重复随机数相关的知识,希望对你有一定的参考价值。

function bgcolor() var items = $('.listitems'); var arand = 5; items.each(function () var rand = parseInt(4*Math.random()); if (rand !== arand) $(this).addClass("sbg" + rand); var arand = rand; else bgcolor(); ); bgcolor();想要的效果是输出1-3的随机数,但输出的数字要和上一次输出的不同。自己试了一下还是会出现和上一次结果相同的情况。请教高手应该如何修改
function bgcolor()
var items = $('.listitems');
var arand = 5;
items.each(function ()
var rand = parseInt(4*Math.random());
if (rand !== arand)
$(this).addClass("sbg" + rand);
var arand = rand;
else
bgcolor();

);

bgcolor();

想要的效果是输出1-3的随机数,但输出的数字要和上一次输出的不同。
自己试了一下还是会出现和上一次结果相同的情况。
请教高手应该如何修改

参考技术A function bgcolor()
var items = $('.listitems');
var arand = 5;
items.each(function ()   
var rand = getRandom(arand);
$(this).addClass("sbg" + rand);
arand = rand;
);  

function getRandom(arand) 
var rand = parseInt(4*Math.random());
if (rand == arand) 
return getRandom(arand);
 else 
return rand;


bgcolor();

 记得给分!!!

本回答被提问者和网友采纳
参考技术B function createRandomNumber_2(num,maxNum)
    if(!maxNum || !num)
        alert("请输入参数!");
        return false;
    
    var flag = 0,
            i=0,
            arr=[];
    if(maxNum - num < 0)
        flag = maxNum;
        maxNum = num;
        num = flag;
    
    for(;i<maxNum;i++)
        arr[i] = i-0+1;
    

    arr.sort(function(p1,p2)
        return 0.5-Math.random();
    );
    //上面这段代码,就是该思想的核心。
    arr.length = num;
    return arr;

参考技术C

不理解你的需求。看起来像是取得多个对象,对每个对象进行随机加CSS的类。

你说的输出数字要和上一次输出的不同,是指每个对象本身,还是指每个对象跟上一个对象不同?

//这个是对每个对象本身
function bgcolor()
var items = $('.listitems');
var arand = 5;
items.each(function ()   
var rand = parseInt(4*Math.random());
var crclass ='';
while ($(this).hasClass("sbg" + rand))

crclass="sbg" + rand;
rand = parseInt(4*Math.random());

$(this).removeClass(crclass);
$(this).addClass("sbg" + rand);

);  

bgcolor();

追问

指每个对象跟上一个对象不同 你的代码我刚才试了下 还是有两个连续相同class的情况

追答

那是,我已经在注释里说了。

function bgcolor()
var items = $('.listitems');
var arand = 5;
items.each(function ()   
var rand = parseInt(4*Math.random());

var crclass ="sbg" + arand;
while (rand == arand)

rand = parseInt(4*Math.random());

arand = rand; 
$(this).removeClass("sbg" + 1);
$(this).removeClass("sbg" + 2);
$(this).removeClass("sbg"  +  3);

$(this).addClass("sbg" + rand);

);  

bgcolor();

参考技术D var arand = rand;

把var去掉;
还有把html代码复制下,方便测试

JS 在指定数组中随机取出N个不重复的数据

/*
*思路:每次随机从数组抽出一个数放进新的数组,然后将这个数从原数组中剔除,这个就不会抽到重复的数了
*/
function
makeRandomArr(arrList,num){ if(num>arrList.length){ return; } // var tempArr=arrList.concat(); var tempArr=arrList.slice(0); var newArrList=[]; for(var i=0;i<num;i++){ var random=Math.floor(Math.random()*(tempArr.length-1)); var arr=tempArr[random]; tempArr.splice(random, 1); newArrList.push(arr); } return newArrList; }

说明:数组的赋值,例如直接将arr1赋值给arr2,那么改变arr2,arr1也会发生改变,因为他们的都指向一个内存容器。所以我为了不改变原数组,用了下面其中一个方法。

 var tempArr=arrList.concat(); //返回数组的拷贝数组,注意是一个新的数组,不是指向
 var tempArr=arrList.slice(0);//返回数组的拷贝数组,注意是一个新的数组,不是指向
栗子:
var testArr=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17];
var test=makeRandomArr(testArr,7);
console.log(test);//2,5,8,3,9,10,15
console.log(testArr);//1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17

 

以上是关于jquery js 不重复随机数的主要内容,如果未能解决你的问题,请参考以下文章

JS生成不重复的随机数组的简单实例

在两个变量jquery之间生成随机数[重复]

js生成不重复的随机数

js指定范围指定个数的不重复随机数

js生成 1-100 不重复随机数

js生成 1-100 不重复随机数