精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>网络专区>>● 网站建设>>盖世神功 — 网站建设技术>>Java Script — 来一杯热咖啡>>用JavaScript产生不重复的整数代码

主题:用JavaScript产生不重复的整数代码
发信人: eagle(老鹰)
整理人: eagle(2001-05-13 13:03:15), 站内信件
evil_nike昨天问过如何用ASP产生一个0-100之间不重复的整数组.
产生随机整数不难,麻烦是要判断它有没有重复, 我的方法是用
一个辅助数组来标记随机数是否重复,用另外一个数组保存结果.
由于本人不懂ASP,只好用JavaScript作为例子做答. 用类似的
方法,在PHP和JSP上实现都没有问题.代码如下:

<html>
<script language="JavaScript">
var count = 40;          //需要的随机数个数
var total = count;       //作为count的备份
var temp;                //暂存变量 
result = new Array(50);  //保存结果的数组
a = new Array(100);      //辅助数组

//做一个100元素的数组,并把其值全部置成 -1
for(i=0;i<100;i++){
a[i]=-1;
}

/*
用产生的随机整数 temp 作为数组 a[] 的元素下标来检索数组,如果
元素 a[temp] 中的值为-1,则说明产生的随机数为第一次出现的,把
a[temp] 的值置成 1,作为识别。并把产生的随机数 temp 保存到结果
数组result[]中。如果 a[temp] 元素值不为 -1,则说明随机数已经出
现过,不保存,继续产生新的随机数,直至产生 count 个的随机数为止。
*/
while(1){
temp = Math.round(Math.random()*100); //产生0-100间的随机整数
if(a[temp] == -1){
a[temp]= 1;
result[--count] = temp;
if(count==0) break;
}
}

//打印出结果
for(i=0;i<total;i++){
document.writeln("result[" + i + "] ="+result[i]+"<br>"); 
}
</script>
</html>

[关闭][返回]