首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

js发作两组随机数,第一组产生不重复随机数组,第二组产生不包括第一组数据的不重复随机数

2013-01-11 
js产生两组随机数,第一组产生不重复随机数组,第二组产生不包括第一组数据的不重复随机数这是我在做下面的

js产生两组随机数,第一组产生不重复随机数组,第二组产生不包括第一组数据的不重复随机数
这是我在做下面的抽奖小系统才有这样的问题:   
在test1.jsp在1-500中产生不重复随机两个数12,23,在第二个页面test2.jsp产生的两个数中不包括12,23,该怎么实现(所有产生的随机数不重复)

//test1.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'tpl.jsp' starting page</title>
    
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
    <script type="text/javascript" src="jQuery.js"></script>
<link rel="stylesheet" type="text/css" href="style.css">
   <script type="text/javascript">
        var c=0
var t
function start()
{
var txt1=Math.round(Math.random() * (500- 1) + 1);
var txt2=Math.round(Math.random() * (500- 1) + 1);
        document. getElementById('txt1').value=txt1;
document. getElementById('txt2').value=txt2;
        t=setTimeout("start()",60)
}
function over()
{
clearTimeout(t);
}
</script>
  </head>
<body>
   <input type="text" id="txt1" style="width:60px;height:50px;font-size:30px;">
   <input type="text" id="txt2" style="width:60px;height:50px;font-size:30px;">
   <div class="start" ><img src="images/start1.png" onclick="start()"/></div>
   <div class="over"><img src="images/over.png" onclick="over()" /></div>
</body>
</html>


//test2.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'tpl.jsp' starting page</title>
    
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
    <script type="text/javascript" src="jQuery.js"></script>


<link rel="stylesheet" type="text/css" href="style.css">
   <script type="text/javascript">
function start()
{
var txt3=Math.round(Math.random() * (500- 1) + 1);
var txt4=Math.round(Math.random() * (500- 1) + 1);
        document. getElementById('txt3').value=txt3;
document. getElementById('txt4').value=txt4;
        t=setTimeout("start()",60)
}
function over()
{
clearTimeout(t);
}
</script>
  </head>
<body>
   <li><input type="text" id="txt3" style="width:60px;height:50px;font-size:30px;"></li>
   <li><input type="text" id="txt4" style="width:60px;height:50px;font-size:30px;"></li>
   <div class="start" ><img src="images/start1.png" onclick="start()"/></div>
   <div class="over"><img src="images/over.png" onclick="over()" /></div>
</body>
</html>


[解决办法]
抽中的号存cookies呀,点停止时判断一下抽出来的号在不在cookies里,在就重抽不就行了。
[解决办法]
代码如下,请根据自己的需求另调整。
/*
页面1代码
*/
var random1 = Math.round(Math.random() * (500 - 1) + 1),// 随机数1
random2 = Math.round(Math.random() * (500 - 1) + 1);// 随机数2

document.cookie = encodeURIComponent("random1") + "=" + encodeURIComponent(random1);
document.cookie = encodeURIComponent("random2") + "=" + encodeURIComponent(random2);
document.writeln("随机数1:" + random1);
document.writeln("随机数2:" + random2);

/*
       页面2代码。
   只实现页面2不能和页面1的随机数一样。若需要页面1和页面2一样的功能,单独抽出公共的代码放到.js文件中,稍修改即可。
*/
var cookie = document.cookie ,
encodeRandom1 = encodeURIComponent("random1"),
encodeRandom2 = encodeURIComponent("random2"),
    random1Start = cookie.indexOf(encodeRandom1 + "="),
random2Start = cookie.indexOf(encodeRandom2 + "="),
random2End,random1End,
cookieRandom1 , cookieRandom2,
random3 = Random(),
    random4 = Random(),
values = [],
i,len;

if(random1Start > -1){
random1End = cookie.indexOf(";" , random1Start);
}

if(random2Start > -1){
random2End = cookie.indexOf(";" , random2Start);
}

cookieRandom1 = decodeURIComponent(cookie.substring(random1Start + encodeRandom1.length + 1 , random1End ));
cookieRandom2 = decodeURIComponent(cookie.substring(random2Start + encodeRandom2.length + 1 , random2End ));
values.push(cookieRandom1);
values.push(cookieRandom2);

random3 = getCompareRandom(random3);
random4 = getCompareRandom(random4);

document.cookie = encodeURIComponent("random1") + "=" + encodeURIComponent(random3);
document.cookie = encodeURIComponent("random2") + "=" + encodeURIComponent(random4);


document.writeln("随机数3:" + random3);
document.writeln("随机数4:" + random4);

function getCompareRandom (random){
for(len = values.length - 1 , i = len ; i >= 0 ; i--){
if(compare(values[i] , random)){
random = Random();
arguments.callee(random);
}
}
return random;
}

function compare(cookie,random){
if(cookie == random){
return true;
}
}

function Random(){
return Math.round(Math.random() * (500 - 1) + 1);
}


[解决办法]
<script type="text/JavaScript">
    function getRound(str){
        var tmp,reg=new RegExp("(^
[解决办法]
 )scscms=([^;]*)(;
[解决办法]
$)","gi");
        if(tmp=reg.exec(document.cookie)){
            if(tmp[2].indexOf(str)==-1){
                document.cookie="scscms="+tmp[2]+"_"+str;
                document.getElementById("scscms").innerHTML=tmp[2]+"_"+str;
                return str;
            }else{
                return getRound(str);
            }
        }else{
            document.cookie="scscms="+str;
            return str;
        }
    }
    var txt3,txt4,t;
    function fun_start(){
        txt3=Math.round(Math.random() * (500- 1) + 1);
        txt4=Math.round(Math.random() * (500- 1) + 1);
        document.getElementById('txt3').value=txt3;
        document.getElementById('txt4').value=txt4;
        t=setTimeout("fun_start()",60);
    }
    function fun_over(){
        clearTimeout(t);
        document.getElementById('txt3').value=getRound(txt3);
        document.getElementById('txt4').value=getRound(txt4);
    }
</script>
<ul>
<li>曾经抽中的号:<span id="scscms"></span></li>
<li><input type="text" id="txt3" style="width:60px;height:50px;font-size:30px;"></li>
<li><input type="text" id="txt4" style="width:60px;height:50px;font-size:30px;"></li>
<li><input type="button" value="开始" onclick="fun_start()"></li>


<li><input type="button" value="结束" onclick="fun_over()"></li>
</ul>


[解决办法]
大概是这个意思,但我的cookie写得过于简单,你找个专业点的函数换了即可。
[解决办法]
引用:
这是一个页面,在两个页面之间怎么做呢
代码一样呀,可复制在相同站点下多个文件使用,关键是cookie相通即可。
[解决办法]
这个不需要用cookie也能实现的吧!把test1.jsp产生出来的随机数提交到后台或者放到session中,然后再在test2.jsp中取出来做对比

热点排行