在线急等asp抽奖问题?高分求教!

gych_18 2009-09-08 09:29:59
问题:
1、每次抽奖出现重复,好比在10个数中第一次抽了个1,第二次如何避免在次抽到1,只在2-9中抽奖!

2、好比一次抽奖抽10个数,但这10个数有重复,如何避免?


代码如下:
<HTML>
<HEAD>
<TITLE> 模拟摇奖 </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<style>


.STYLE1 {font-size: 16pt}
.STYLE2 {
color: #FF0000;
font-weight: bold;
font-size: 24px;
}
.STYLE3 {font-size: 12pt}
.STYLE4 {color: #FF0000; font-weight: bold; font-size: 36px; }
</style>

</HEAD>

<BODY>
<%
connstr="Driver={SQL Server};server=127.0.0.1;database=pubs;uid=sa;pwd=;"
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open connstr
Set rs= Server.CreateObject("ADODB.RecordSet")


%>

<% dim sql,rs,strList
sj_tj=0

sql="select phone from authors "


set rs=conn.execute(sql)
if not rs.eof then
do while not rs.eof
strList = strList&","&rs("phone")
rs.movenext()
loop
end if
rs.close

set rs=nothing
conn.close
strList =mid(strList,2,len(strList)-1)
%>


<table width="80%" border="0" align="center" cellpadding="20" cellspacing="0">
<form name="formXW" id="formXW" method="post">
<tr>
<td align="center" ><p class="STYLE4"></td>
</tr>
<tr>
<td >
<div align="right"></div>
</td>
</tr>
</form>
<tr>
<td align="center" valign="middle">
<strong>摇奖组数:
<input type='text' value='3' style='width:100px;' id='threadnumber'/>
</strong> 
<button id='confirmthread' class="STYLE1">确 定</button>    
<button class="STYLE1" 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>

</table>

<form id="form1" name="form1" action="cjjg.asp" method="POST">
<div align="right">
<p align="right"> </p>
<p align="center">
<!-- 把从数据库读出的数据放到这里来 -->
<input type="hidden" name="NoUser" id="NoUser" value="<%=strList%>">
<%
'response.write "显示:"&strList
'"&dateb&"' and '"&datee&"'"
%>
<input name="dateb" type="hidden" id="dateb" value="<%=dateb%>" size="40">
<input name="datee" type="hidden" id="datee" value="<%=datee%>" size="40">
<input name="cjfw" type="hidden" id="cjfw" value="<%=sql%>" size="40">
<input name="cjsz" type="hidden" id="cjsz" value="" size="40">
<input name="cjsz_sl" type="hidden" id="cjsz_sl" value="" size="40">
<input name="cjjg" type="hidden" id="cjjg" value="" size="40">
</p>
<p>
<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=[];
//-------------分析从数据库中读出的数据
var strUserNo = document.getElementById("NoUser");
var strList = strUserNo.value;
var strSplit = strList.split(",");
rollaward.total = strSplit.length;
//------------------------------------------
rollaward.initialize=function() {
for(var i=0;i<rollaward.total;i++)
{
rollaward.awardArray[i]=strSplit[i];
}
for(var i=0;i<rollaward.threadnum;i++)
{
var div=document.createElement('DIV');
div.id='randmizenum'+i;
div.innerHTML='000000000000';
div.runtimeStyle.border='20px solid red';
<!-- 例如这一次摇3组 三组边框的颜色!border= -->
div.runtimeStyle.width='400px';
div.runtimeStyle.margin='5px 0px 5px 0px';
<!-- 例如这一次摇3组 三组之间的间隔!margin= -->
$('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 + '等奖 中奖号码:'
$('cjsz').value+= rollaward.count +',';
$('cjsz_sl').value+=rollaward.threadnum+',';
$('awardnumber').innerHTML+='<br/>';
for(var i=0;i<rollaward.threadnum;i++)
{
$('awardnumber').innerHTML+=rollaward.awardArray[rollaward.rndnumArray[i]]+' ';
$('awardnumber').innerHTML+='<br/>';
$('cjjg').value+=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>
</p>
</div>
</form>

</BODY>
</Html>
...全文
195 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
gych_18 2009-09-11
  • 打赏
  • 举报
回复
代码确实不是我写的,但我也确实是来学习的,JavaScript我也看不懂,所以才来请教!
gych_18 2009-09-09
  • 打赏
  • 举报
回复
我知道这个原理,可是代码怎么写啊!大哥
renzaijiang 2009-09-09
  • 打赏
  • 举报
回复
抽风好了
Sean918 2009-09-09
  • 打赏
  • 举报
回复
唉 。。。 又是一个把 CSDN 当作业抄袭基地的孩子。。。

看看上面的代码,再看看楼主说的话。。。

很明显这个代码不是自己写的!
hongmaohouzi 2009-09-08
  • 打赏
  • 举报
回复
可以将已经出现过的号码存起来,下次跳出这个号码,就自动跳过,确保每次的号码都是不一样的。
gych_18 2009-09-08
  • 打赏
  • 举报
回复
在线急等高手解答!拜谢!
gych_18 2009-09-08
  • 打赏
  • 举报
回复
楼上的lihui_shine老师你好!您写的这个实例倒是这个意思,可是对应我这个实例该怎么做呢,JavaScript我真不知道该怎么着手!忘再伸援手!
gych_18 2009-09-08
  • 打赏
  • 举报
回复
楼上的大哥能写个实例吗?
浪尖赏花 2009-09-08
  • 打赏
  • 举报
回复
做了个例子
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>test</title>
<script>
var arr = [1,2,3,4,5,6,7,8,9,10];
function getRand(){
if(arr.length==0){
alert("摇奖完毕!");
return;
}
var i = Math.floor(Math.random()*arr.length);
alert("您摇到"+arr[i]);
arr = arr.slice(0,i).concat(arr.slice(i+1,arr.length));
}
</script>
</head>

<body>
<input type=button value="get rand" onclick="getRand()">
</body>

</html>
sayfree 2009-09-08
  • 打赏
  • 举报
回复
定义一个数组,把抽出来的数同时写进数组,
下次得到随机数,判断数组里面是否存在,如果存在立即重新随即抽数,不过数组里不存在,就表示不重复。
gych_18 2009-09-08
  • 打赏
  • 举报
回复
希望知道答案的朋友,能不辞辛苦,写个实例!谢谢!我对JavaScript不是很懂!
liuwei_IT_love 2009-09-08
  • 打赏
  • 举报
回复
创建一个随机函数randomize,单击开始,调用这个随机函数,就像验证码,每次刷新都不一样
凡夫与俗子 2009-09-08
  • 打赏
  • 举报
回复
俺也不会。顶下
gych_18 2009-09-08
  • 打赏
  • 举报
回复
老大我就是不知道如何移除,跪求真经,拜谢!
浪尖赏花 2009-09-08
  • 打赏
  • 举报
回复
定义一个数组,放1-10,抽取是从这个数组中抽,抽中的从该数组中移除,下次再抽就不会有了
三楼の郎 2009-09-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 gych_18 的回复:]
定义一个数组,放1-10,抽取是从这个数组中抽,抽中的从该数组中移除,下次再抽就不会有了
[/Quote]

[Quote=引用 2 楼 gych_18 的回复:]
老大我就是不知道如何移除,跪求真经,拜谢!
[/Quote]

第一次从1-10里随机抽取1个,然后把抽出来的那个和第10个互换,第二次再从1-9里随机抽取1个,然后把抽出来的那个和第9个互换,第三次再从1-8里随机抽取一个,然后再把抽出来的那个和第8个互换,循环下去直到取够数量。

这种方法可以保证不会取到重复的!
gych_18 2009-09-08
  • 打赏
  • 举报
回复
难道我给出的这个程序就这么难,没人能修改的了吗?

希望知道答案的老师,能给出正解答案,小弟太笨,实在修改不了!
number123456 2009-09-08
  • 打赏
  • 举报
回复
以上只是得出一组不重复的1-9数字组合,和你的代码没关系
你可以跟据你的需求,加入到人的程序代码中
gych_18 2009-09-08
  • 打赏
  • 举报
回复
小弟还是不明白!请针对我的代码详细说明注释一下好吗?我该如何修改!小弟不胜感激!急等!

number123456 2009-09-08
  • 打赏
  • 举报
回复
set Rand = CreateObject( "Scripting.Dictionary" )
Rand.add 1,1
Rand.add 2,2
Rand.add 3,3
Rand.add 4,4
Rand.add 5,5
Rand.add 6,6
Rand.add 7,7
Rand.add 8,8
Rand.add 9,9

for i = 1 to 9
RandIndex = RndNumber(Rand.Count,1)

Rands = Rand.Items()
RandKey = Rand.Keys()
Response.write(Rands(RandIndex-1))'输出本次的数
GetKey = RandKey(RandIndex-1)'获得键值
'Response.write "{"&RandIndex&"}"
Rand.Remove(GetKey)'从对像中删除该值

Next
Function RndNumber(MaxNum,MinNum)
Randomize
RndNumber=int((MaxNum-MinNum+1)*rnd+MinNum)
RndNumber=RndNumber
End Function


己经测试过
加载更多回复(1)
抽奖插件主要用于动态网站(ASP,PHP,.NET,JSP,JS等)WEB页面中的抽奖活动使用,适用于二次开发使用;使用时请参考CHM说明书或文本说明; 1、可以设置每个奖品的中奖概率,概率可以设置为0(即为不中这个奖项)或100%(一定中这个奖项,前提本奖品数量大于0); 2、目前唯一一款可以调节概率模式的抽奖插件,可以根据网站的规模和实际情况,调节概率模式,更有利于抽奖活动的进行; 3、可以更换奖品图片,尺寸参考说明; 4、设置奖品名称,奖品名称可以在抽奖转盘中在鼠标滑过不同奖品图片时提出奖品信息; 5、设置奖品数量,奖品数量与名称均可以以揭示信息的形式显示出来,本程序相对其它抽奖插件更为合理与严谨,很多抽奖程序虽也可以设置奖品数量并传递给Flash转盘,但奖品数量不能实时更新,犯下了与现实场景抽奖活动的错误,请大家注意,网页抽奖是面对N多个用户同时自助抽奖的,奖品数量有可能在用户打开网页后,其它用户也在抽奖,故奖品数量在动态变化的; 6、可以按商家自己需求更换或设计不同的转盘背景,转盘指针,开始按钮等,方法参考说明; 7、抽奖程序可以以积分形式或登陆抽奖等形式进行,具体请参考说明; 8、抽奖插件使用时可以直接将抽奖转盘移于自己网页页面当中.....
酷窗版演示:http://www.edd8.com/bbs/index.asp?style=0 简装版演示:http://www.edd8.com/bbs/index2.asp 一点点论坛(http://www.edd8.com/bbs)使用说明 欢迎大家下载使用一点点论坛,在使用论坛前,请认真阅读以下内容: ===================================== 论坛:一点点论坛(http://www.edd8.com/bbs) 主页:一点点星空驿站(http://www.edd8.com/) 站长:叮咚虫(e_Mail:b_li@163.com) 版本:EDD8 Ver.2003 for DV =====================================   一点点论坛是建立在动网论坛基础上的ASP互动论坛,从动网Var5.b109开始论坛结构便开始脱离动网,与动网升级一起,本论坛本身也同时实现了动网新的功能,到519的发布,本人常得论坛本身已功能基本完善,所以决定与动网完全脱离,到动网Final的出现,本论坛也决定不再跟随动网升级了,本人全面对原来的论坛进行了代码优化和版面重排,并升级了部分功能代码,完成了现在这样的论坛。使论坛已经完全脱离了动网,以后也不可以随动网一起升级了!   所以选择本论坛的朋友请先明白,如果采用了本论坛的数据结构,以后就不可以和动网一起升级了,而现有的动网Final版的数据库和本论坛的数据库也是不兼容的!对于动网V5.b519的用户,本人同时在压缩包里提供了升级文件,可以把你519的数据库升级成和本论坛一致的数据结构!   由于一些朋友催得较,部分功能还是没有完善的(但不会出错),我以后也会给出升级包的。所以决定使用本论坛的朋友,请一定要到本站论坛的“站务办公室”进行指定的留言签名,以好我第一时间通知大家升级!   论坛中使用到的部分插件并没有一同奉上,原因是我还没完成代码优化,请过几天到我的论坛上下载。可以下载的插件主要有:社区银行、网络拳皇、可乐吧台球、五子棋等等…… ===================================== 主要特色功能说明: ◎ 双版面设计,用户可以根据不同爱好选择不同的版式(酷窗版和精简版),系统会记录用户的选择,不用重复选择,也不会出现版面混淆等现象; ◎ 发贴回贴互动功能,给用户随机的互动事件,增加用户的参与兴趣; ◎ 增强的UBB代码和JS代码,新增的买卖贴、定时贴等十几种特色功能UBB代码; ◎ 贴子功能加强,增加互动鲜花、鸡蛋、金钱、炸弹等功能,并保存数据作为用户在论坛的人缘依据; ◎ 不好说了,等你去发掘吧,不然又说我叫卖了…… ====================================== 安装说明: 解压就可以了,数据库名称和路径有变动时不要忘了在CONN。ASP中进行相应修改。 (注意:当论坛中一个贴子也没有时,论坛明星会出错,但当你加入贴子后就正常了,大家不要惊慌) 升级:(对519),解压后把你的原519数据库覆盖现数据库,再执行根目录下的UPDATE。ASP文件就行了,如果没有升级成功的提示,说明你的数据不能进行升级! (注意:数据库的升级应做了备份,并在本机上进行!) ====================================== 最后一点说明: 由于论坛本来是打算自己用的,所以在设计的过程中部分变量已经去掉,不能从后台设置了(如表格边框),请大家最好保持现有的风格。 如果还不问题,可以到我的论坛上来交流。??注意,由于本人时间不限,技术支持是有限的,请不要过于强求!

28,409

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧