never-online 's Tech Blog In CSDN

never online - Everlasting love for angela.

用户操作
[即时聊天] [发私信] [加为好友]
rank liuID:BlueDestiny
153580次访问,排名499好友17人,关注者33
在京城
BlueDestiny的文章
原创 114 篇
翻译 0 篇
转载 8 篇
评论 224 篇
never-online的公告
Web:
www.never-online.net
Email:
BlueDestiny##126.com
QQ:
77091373
最近评论
kwlong2008:来看看朋友,最近过的怎么样?俺的空间是介绍网站制作网站建设的,有时间也常去一下我的空间谢谢,wow gold

When you play a game of the day, the list of friends in the game whether there are always a few names of black
wow power leveling<……
zyhomepage:支持一下
clicksun:如果要制作纯CSS+DIV的圆角方框图形,可以到这里直接在线制作,什么颜色都可以:http://corner.cha.la
C_SuperMe:可以好好学习一下啊!!
文章分类
收藏
相册
icon
JS & DHTML
Dhteumeuleu
Douglas Crockford
Webfx
常去之地
ASP.Net
MSDN英文
XML指南
XML的大本营
博客园
正则表达式
我的网站
我网站的Blog(RSS)
友情链接
KimSoft的blog(RSS)
存档
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes

原创 模拟了一个多线程的抽奖的程序收藏

新一篇: 关于正则的[]限定符的区间 | 旧一篇: 关于asp站点多国语言的问题

其中有一个不足的就是,在启用“多线程”的时候,在生成随机数的时候,有可能会重复;如果单一的“线程”,还是正常的。最近有同事测试可能有重复现象。我就懒得改了,原理就是这样,有兴趣就改改吧:)

代码如下

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> 模拟摇奖 </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<style>
* {
 font-size:10.2pt;
 font-family:verdana;
}
</style>
</HEAD>

<BODY>
<table width="80%" border="0" cellpadding="20" cellspacing="0" align="center">
  <tr>
    <td align="center" valign="middle">线程数:<input type='text' value='3' style='width:25px;' id='threadnumber'/><button id='confirmthread'>确定</button>&nbsp;<button id='cmd_execute'>开始摇奖</button></td>
  </tr>
  <tr>
    <td align="center" valign="middle" id='randmizecontainer' style='font-size:20px;font-weight:bolder;'></td>
  </tr>
  <tr>
    <td align="center" valign="middle"><div id='awardnumber'></div></td>
  </tr>
  <tr>
    <td align="center" valign="middle" align='center'>Power By Bluedestiny</td>
  </tr>
</table>
<SCRIPT LANGUAGE="JavaScript">
<!--
// Power By Bluedestiny
function $(obj) {return document.getElementById(obj);}
function rollaward() {};

rollaward.awardnum=null;
rollaward.total=1000;//摇奖的数组最大下标
rollaward.rollspeed=10;//摇奖速度
rollaward.threadnum=3;//默认线程数

rollaward.count=0;
rollaward.threadnumArray=[];
rollaward.rndnumArray=[];
rollaward.rndidArray=[];
rollaward.awardArray=[];

rollaward.initialize=function() {
 for(var i=0;i<rollaward.total;i++)
  rollaward.awardArray[i]='var ' + i;
 for(var i=0;i<rollaward.threadnum;i++)
 {
  var div=document.createElement('DIV');
  div.id='randmizenum'+i;
  div.innerHTML='00000';
  div.runtimeStyle.border='2px solid blue';
  div.runtimeStyle.width='100px';
  div.runtimeStyle.margin='5px 0px 5px 0px';
  $('randmizecontainer').appendChild(div);
  rollaward.rndidArray[i]='randmizenum'+i;
 }

}
rollaward.confirmthreadnum=function() {
 rollaward.removethreadnum();
 rollaward.threadnum=parseInt($('threadnumber').value);
 rollaward.initialize();
 event.srcElement.disabled=true;
}
rollaward.removeinterval=function()
{
 for(var i=0;i<rollaward.threadnum;i++)
  clearInterval(rollaward.threadnumArray[i]);
}
rollaward.removethreadnum=function()
{
 for(var i=0;i<rollaward.threadnum;i++)
  if($('randmizenum'+i))$('randmizenum'+i).removeNode(true);
}
rollaward.start=function() {
 if(rollaward.total==0)
 {
  rollaward.removeinterval();
  return;
 }
 
 for(var i=0;i<rollaward.threadnum;i++)
 {
  rollaward.rndnumArray[i]=parseInt(Math.random()*(rollaward.total));
  $('randmizenum'+i).innerHTML=rollaward.awardArray[rollaward.rndnumArray[i]];
 }

 $('cmd_execute').value='停止摇奖';
}
rollaward.stop=function() {
 rollaward.removeinterval();
 rollaward.count++;
 $('awardnumber').innerHTML+='第 ' + rollaward.count + ' 组中奖者:'
 for(var i=0;i<rollaward.threadnum;i++)
 {
   $('awardnumber').innerHTML+=rollaward.awardArray[rollaward.rndnumArray[i]]+' ';
 }
 $('awardnumber').innerHTML+='<br/>';
 $('cmd_execute').value='开始摇奖';
 
 for(var i=rollaward.awardnum;i<rollaward.total;i++)
  rollaward.awardArray[i]=rollaward.awardArray[i+1];
 rollaward.total--;
 rollaward.awardArray.length--;
}
function _click()
{
 if(event.srcElement.value=='开始摇奖')
 {
  for(var i=0;i<rollaward.threadnum;i++)
   rollaward.threadnumArray[i]=setInterval(rollaward.start,rollaward.rollspeed)
 }
 else
 {
  rollaward.stop();
 }
}
function _unload()
{
 rollaward.removethreadnum();
}
rollaward.initialize();
$('cmd_execute').attachEvent('onclick',_click);
$('confirmthread').attachEvent('onclick',rollaward.confirmthreadnum);
window.attachEvent('onbeforeunload',_unload);
//-->
</SCRIPT>
</BODY>

</HTML>

发表于 @ 2006年01月13日 23:08:00|评论(loading...)|编辑

新一篇: 关于正则的[]限定符的区间 | 旧一篇: 关于asp站点多国语言的问题

评论

#小灰 发表于2006-01-21 12:45:00  IP: 60.190.252.*
不错,function $(obj) {return document.getElementById(obj);}
学习,呵呵
#test 发表于2006-10-16 09:35:00  IP: 60.0.122.*
源数据少后,有重复数据出现现象。
发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © never-online