游客:
注册
|
登录
|
会员
|
搜索
|
统计
|
帮助
无忧脚本
»
JavaScript & VBScript & DHTML 脚本技术讨论版
» javascript 如何生成不重复的随机数
‹‹ 上一主题
|
下一主题 ››
27
2/2
‹‹
1
2
投票
交易
悬赏
活动
打印
|
推荐
|
订阅
|
收藏
标题:
[求助]
javascript 如何生成不重复的随机数
js小白
大恐龙
UID 73674
精华 0
积分 510
帖子 250
威望 215
阅读权限 50
注册 2007-7-30
状态 离线
#21
大
中
小
使用道具
发表于 2007-11-5 10:46
资料
个人空间
短消息
加为好友
<script language="javascript"> var arr_1 = new Array(); var rstArr = new Array(); for(var i = 0; i<50; i++) { arr_1[i] = i+51; } for(var i = 0; i<50; i++) { var z = Math.floor((50-i)*Math.random()); rstArr.push(arr_1[z]); arr_1.splice(z,1); } document.write(rstArr.join("<br>")); </script>
提示:您可以先修改部分代码再运行
dron
超级版主
UID 19294
精华
3
积分 6306
帖子 3043
威望 3465
阅读权限 150
注册 2004-11-9
来自 中国福建
状态 离线
#22
大
中
小
使用道具
发表于 2007-11-5 11:49
资料
个人空间
短消息
加为好友
呵呵,真有趣,这个问题已经引申出有序数组的洗牌问题了,有兴趣的同学继续玩下去吧~~~
`
<script type="text/javascript"> Array.prototype.riffle = function(){ this.sort(function(){ return Math.random() > 0.5 ? -1 : 1; }); } for(var i = 50, ar = new Array(); i <= 100; i++) ar[i - 50] = i; ar.riffle(); alert(ar); </script>
提示:您可以先修改部分代码再运行
桌面
博客
相册
聊天机器人
F1赛车
dron
超级版主
UID 19294
精华
3
积分 6306
帖子 3043
威望 3465
阅读权限 150
注册 2004-11-9
来自 中国福建
状态 离线
#23
大
中
小
使用道具
发表于 2007-11-5 12:05
资料
个人空间
短消息
加为好友
呵呵,以上的洗法似乎会把 50 附近的数总是洗到最后去,我们打扑克时经常多洗一会儿,那就再次一次吧,两次 sort 应该比较行了吧
`
<script type="text/javascript"> Array.prototype.riffle = function(){ var sf = function(){ return 0.5 - Math.random(); } this.sort(sf).sort(sf); } for(var i = 50, ar = new Array(); i <= 100; i++) ar[i - 50] = i; ar.riffle(); alert(ar); </script>
提示:您可以先修改部分代码再运行
桌面
博客
相册
聊天机器人
F1赛车
月影
超级版主
UID 24714
精华
9
积分 4243
帖子 1553
威望 1918
阅读权限 150
注册 2005-3-9
状态 离线
#24
大
中
小
使用道具
发表于 2007-11-5 13:37
资料
个人空间
主页
短消息
加为好友
嗯,多洗几次就好了……
月影
超级版主
UID 24714
精华
9
积分 4243
帖子 1553
威望 1918
阅读权限 150
注册 2005-3-9
状态 离线
#25
大
中
小
使用道具
发表于 2007-11-5 13:45
资料
个人空间
主页
短消息
加为好友
我也来一种洗牌法……
<script type="text/javascript"> Array.prototype.riffle = function(n){ for(var i = 0; i < n; i++) { this.push(this.splice((Math.random() * this.length) | 0, 1)); } } for(var i = 50, ar = new Array(); i <= 100; i++) ar[i - 50] = i; ar.riffle(1000); alert(ar); </script>
提示:您可以先修改部分代码再运行
dron
超级版主
UID 19294
精华
3
积分 6306
帖子 3043
威望 3465
阅读权限 150
注册 2004-11-9
来自 中国福建
状态 离线
#26
大
中
小
使用道具
发表于 2007-11-6 11:04
资料
个人空间
短消息
加为好友
哈哈,随机抽取一张,放到最后去...
桌面
博客
相册
聊天机器人
F1赛车
lola
小恐龙
UID 51690
精华 0
积分 286
帖子 169
威望 142
阅读权限 30
注册 2006-5-15
状态 离线
#27
大
中
小
使用道具
发表于 2007-11-6 14:10
资料
个人空间
短消息
加为好友
每次调用一次Math.random()就可以了
与我交谈
27
2/2
‹‹
1
2
投票
交易
悬赏
活动
最近访问的论坛 ...
Flex & Flash 技术讨论版
Html & XHtml & CSS 网页制作讨论版
ASP & Access & SQL Server 后台编程讨论版
无忧脚本
无忧脚本技术讨论区
> 原创文章 & 讨论汇总版
> Html & XHtml & CSS 网页制作讨论版
> JavaScript & VBScript & DHTML 脚本技术讨论版
> XML & XSL & XPath & VML 网页技术讨论版
> ASP & Access & SQL Server 后台编程讨论版
> PHP & MySQL 后台编程讨论版
> JSP & Java & J2SE 后台编程讨论版
> .Net 相关技术讨论版
> Web 服务器技术
> Flex & Flash 技术讨论版
> Web UI & 图形技术讨论版
无忧脚本资源服务区
> 经典代码、教程资源库
> 参考手册、常用软件资源库
> 无忧合租服务器讨论版
无忧脚本休闲区
> 休闲留言板
> 招聘求职、网站推荐、广告信息版
> 无忧站务管理版
> 垃圾帖回收站
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
升级个人空间
基本概况
流量统计
客户软件
发帖量记录
论坛排行
主题排行
发帖排行
积分排行
在线时间
管理团队
当前时区 GMT+8, 现在时间是 2010-7-31 04:39
苏ICP备05080427号
Powered by
Discuz!
5.5.0
© 2001-2007
51JS.COM
Processed in 0.298754 second(s), 8 queries , Gzip enabled
TOP
清除 Cookies
-
联系我们
-
无忧脚本
-
Archiver