免費論壇 繁體 | 簡體
Sclub交友聊天~加入聊天室當版主
分享
Board logo

标题: [AS3技巧集] AS3技巧集:4.不重复的随机数 [打印本页]

作者: 网雨霏霏    时间: 2019-3-17 22:15     标题: AS3技巧集:4.不重复的随机数

本帖最后由 网雨霏霏 于 2019-3-17 22:17 编辑

【问题描述】:
有许多数字,从中随机抽取,要求已经抽取出的数字不得在后续抽取过程中出现。换言之,一个数字最多只能抽取一次


【解决方案】:
先下载制作好的文件:
本帖隐藏的内容需要回复才可以浏览
【使用flashCS6制作的】

[attach]1370[/attach]



代码如下:
  1. var shuzu:Array=new Array(50)
  2. for(var i:uint;i<shuzu.length;i++){
  3. shuzu=i+1
  4. }
  5. var suoyin:uint
  6. sjs_btn.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler);
  7. function fl_MouseClickHandler(event:MouseEvent):void
  8. {
  9. suoyin=Math.floor(Math.random()*shuzu.length)
  10. xianshi.text=""+shuzu[suoyin]

  11. trace(shuzu[suoyin])
  12. shuzu.splice(suoyin,1)
  13. }
复制
下面解释一下上述代码【对照着截图看代码所在的行号】
1:创建一个数组,用于存储所有可能的随机数。我这里假设有50个随机数
2-4:一个for循环语句,作用是将1到50这50个数字分别赋值给shuzu的50个元素
6:这是一个用于索引数组内元素的一个变量
7-16:鼠标单击事件
11、先看Math.random()*shuzu.length 返回值是【大于等于0,小于shuzu的长度】
然后用Math.floor包括起来,用于将上面的数字取整,没有这个包括,得到的是带有小数点的数字。
取整的函数共有三个:
Math.floor 去尾 例:3.9处理后是3
Math.seil 进一 例:3.1处理后是4
Math.round 四舍五入 例:3.4处理后是3 3.5处理后是4
12、对舞台上的动态文本赋值,必须是字符串形式的,故而利用""这个空字符串和+连接符
赋的值 就是数组内索引是suoyin位置的元素的值
14、这行只能在测试环境中有效,方便大家记住已经抽取的数字
15、这一行是本例的核心所在,每单击一次按钮,就将shuzu内的这个被抽取出来的元素给删除
从而保证被抽取的数字不会重复
作者: flashroad    时间: 2019-8-7 13:20

爱你呦......

作者: flashroad    时间: 2019-9-12 23:47

他[她]看完这篇文章说:

(来自快速回帖模式)
作者: 吃饭的厨子    时间: 2020-2-11 21:59

爱你呦......

作者: 迷彩不流泪    时间: 2020-2-18 14:25

学习学习,
作者: 人生陌路    时间: 2021-3-31 08:31

谢谢大佬分享!
作者: flashroad    时间: 2021-4-9 10:02

深表赞同......





欢迎光临 flash之路-flash技术交流 (http://flashroad.joinbbs.net/) Powered by Discuz! 7.2