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的随机数,但输出的数字要和上一次输出的不同。
自己试了一下还是会出现和上一次结果相同的情况。
请教高手应该如何修改
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 不重复随机数的主要内容,如果未能解决你的问题,请参考以下文章