AS3.0不重复的随机数代码
AS3.0案例教程
4
案例3打飞机
绑定类访问影片子元件 1做影片剪辑 2 生成类文件 1)为子影片剪辑定义MovieClip类型 3构造函数调用初始化函数init()
4、function init()影片剪辑播放;实现拖动;鼠
标单击事件侦听 5、侦听函数实现子影片剪播放功能 6、扩展功能*:鼠标点击影片剪辑移动和旋转
24
期末巩固练习
2、游戏逻辑
状态1准备选第1张 firstcard=null secondcard=null
25
状态2准备选第2张 firstcard≠null secondcard=null
期末巩固练习
2、游戏逻辑
状态3未配对成功 firstcard≠null secondcard≠null
26
5)变量内容由影片剪辑到根层级传递(见代码)
30
期末巩固练习
5、添加游戏效果
5、1卡片翻转效果
1)新建一个Card类,实现翻转。十步实现翻转。设一个变量=10,递减 2)6-10步this.scaleX=0.8,0.6,0.4,0.2,0逐渐变小
3)5-1步相反this.scaleX=0,0.2,0.4,0.6,0.8,1
lineSprite.graphics.moveTo(rectCanvas.x , rectCanvas.y + tileHeight*(i + 1));
lineSprite.graphics.lineTo(rectCanvas.x + rectCanvas.width , rectCanvas.y + tileHeight*(i + 1));
0
1
2
3
2
5
trace( tile.index % col );1 trace( Math.floor(tile.index/col) );0
flash as3.0 常用代码
flash as3.0 常用代码1.全屏播放fscommand("fullscreen",true);2.打开时全屏,在该帧停止fscommand("fullscreen",true);stop();3.跳帧播放(从第几针开始播放后)on (press) {gotoAndPlay(?);}4.点击时开始播放on (press) {play();}5.退出语句如果是FLASH自带的控件on (click){ fscommand("quit",""); } 自已做的按钮on (release){ fscommand("quit",""); }6、当鼠标滑过影片剪辑时,停止播放时间轴。
on (rollOver) {_root.stop();}7、当在影片剪辑上按下鼠标时,停止播放影片剪辑。
on (press) {stop();}8、当影片剪辑上松开鼠标时,播放影片剪辑。
on (release) {play();}9、当鼠标滑离影片剪辑时,播放当前时间轴。
on (rollOut) {_root.play();}10、Goto:跳到一个指定的帧(Frame)Scene: 指定SceneFrame:Number,Label,Expression,Next Frame,Previous Frame 可以选择Frame 的编号,标号,通过表达式,下一帧,前一帧Expression: 定义表达式Control:Go to and Play,Go to and Stop 经过选择这个项目来确定到达指定的帧以后是继续播放还是停止例:Go to and Play (1) 跳到第一帧播放Go to Next Frame 跳到下一帧播放Go to and Stop ("intro") 跳到标号为intro 的帧播11、Play:播放Stop:停止Toggle High Quality:切换画面的细节程度Stop All Sounds:停止所有声音Get URL:打开指定的网址URL: 网址Windows:_self,_blank,_parent,_top 打开网址时使用的目标Variables on’t Send,Send use GET,Send use POST 变量的传递方式例:Get URL ("next.asp", window="_blank", vars=POST) 在新窗口中打开next.asp,并且传递参数12、FScommand:调用命令Command: 命令Arguments: 参数For standalone player:fullscreen,allowscale,showmenu,exec,quit 播放器使用的固定命令和参数例:FS Command ("fullscreen", "true") 设置全屏幕播放13、Load/Unload Movie:调入/释放外部的影片Action:Load movie into location,Unload movie from location,Load variables into location: 可以选择是否调入新影片,释放已经调入的影片,调入变量URL:影片的网址Location:Level,Target: 调入的层,或者是某一目标对象的位置Variables on’t Send,Send use GET,Send use POST: 变量的传递方式例子:Load Movie ("test.swf", 1): 把test.swf 调入到第一层Load Movie ("test.swf", "loadit", vars=GET): 把test.swf 调入到loadit 目标对象的位置Unload Movie ("loadit"): 把loadit 目标对象处的影片释放Load Variables ("makeit.asp", 2, vars=GET): 调用makeit.asp 并接收返回的变量14、Tell Target:指定目标对象Target: 目标对象例:Begin Tell Target ("obj") 指定目标对象objEnd Tell Target15、If Frame is Loaded:判断某帧是否调入Scene: 指定场景Frame:Number,Label,Expression: 指定帧,标号或者表达式Expression: 表达式例:If Frame Is Loaded (Scene 1, "end")End Frame Loaded:判断场景一的标号为end 的帧是否调入16、On MouseEvent 鼠标时间响应Event ress,Release,Release Outside,Roll Over,Roll Out,Drag Over,Drag Out,Key Press 各种事件:按下,放开,在外面放开,焦点移入,移出,拖过,拖出,按键按下例:On (Press) 鼠标按下的时候End OnOn (Key: s) 键盘上s 按下的时候End On17、If 判断条件是否成立Condition: 条件Add Else/Else If clause: 加入Else 再次判断例:If (a=10) 如果a=10 那么……End IfIf (a=10) 如果a=10 那么……不然……ElseEnd If18、Loop 循环Condition: 条件例:Loop While (a=10) 如果a=10 那么循环End Loop19、Call 调用函数帧或对象Frame: 函数帧例:Call ("make") 调用make 帧程序20、Set Property 设置属性Set:Y Positon,X Position,Y Scale,XScale,Alpha,Visibility,Rotation,Name,High quality,Show focus rectangle,Sound buffer time 设置y 坐标,x坐标,y 放大倍数,x 放大倍数,透明度,可视否,旋转角度,名称,精细度,焦点矩形框否是显示,声音缓冲的时间(默认5秒)Target: 目标对象value: 值例:Set Property ("aoe", X Position) = "12" 设置目标对象aoe 的x 坐标为12Set Property (Show focus rectangle) = "0" 取消焦点框21、Set Variable 设置变量Variable: 变量value: 值例:Set Variable: "test" = 10 设置test=1022、Duplicate/Remove Movie Clip 复制对象Action uplicate movie clip,Remove duplicate movie clip 可选择是复制还是删除Target: 目标对象New name: 新目标对象的名字Depth: 深度例:Duplicate Movie Clip ("aoe", "aoe2", 1) 复制aoe 一个新的动画,名字叫aoe2Remove Movie Clip ("aoe2") 删除目标对象aoe223、Drag Movie Clip 拖动影片片段Start drag operation: 开始拖动Target: 目标对象Constrain to rectangle:Left,Top,Right,Bottom 鼠标的位置,左上右下Lock mouse to center: 鼠标放置在中心Stop drag operation 停止拖动例:Start Drag ("aoe", L=2, T=3, R=4, B=5) 拖动目标对象aoe,位置在L=2, T=3, R=4, B=5Start Drag ("aoe", lockcenter) 拖动目标对象aoe,位置是在中心Stop Drag 停止拖动24、Trace 跟踪Message: 信息例:Trace ("aoe") 显示aoeTrace (aoe) 显示aoe 的值25、Comment 注释Comment: 注释例子:Comment ("计算") 注释:计算box_btn.onPress=function(){trace("ok");};按钮实例名称.事件处理方法=function(){ //处理程序};例如:n=1box_btn.onRelease=function(){n=n+1trace("n="+n);}当按钮被点一下的时候,Output窗口会输出:"n=2"onClipEvent(load){stop();}上面是影片剪辑的事件处理函数。
AS 学习笔记
AS 学习笔记1. stage.focus=_txt2 //意思是舞台上的焦点现在跑到了文本框_txt2上了2. _txt1.selectable=false //意思是文本框_txt1不能再被选中,不能再获得焦点。
3. for (i=0; i < this.totalFrames; i++) {addFrameScript(i,framefunction);}//每次时间轴上有跳帧就会触发函数addFrameScript,然后调用函数framefunction4. addFrameScript用于MC跳帧时自动调用函数private function init() {for (var i=0; i<this.totalFrames; i++) {addFrameScript(i,framefunction);}}private function framefunction(){trace(this.currentFrame)}5.当想让某个MC每过一段时间后随机做出一些动作或是不做任何动作方法可以这样做, Var numBox:Array=new Array()Function initNumBox(){For(var i=0;i<10;i++){numBox.push(i)}}initNumBox()timer=new Timer(3000)timer.addEventListener(TimerEvent.TIMER,onTimer)timer.start()function onTimer(e){var num=numBox[Math.floor((Math.random()*10)]switch(num){case 1 :动作一break;case 2 :动作二break;case 3 :动作三break;default: 什么动作也不做}numBox.splice(numBox.indexAt(num),1)if(numBox.length==1){initNumBox()}}5.visible 与alpha 当this.visible=false/this.alpha=0虽然两个都可以让MC不可见,可是当用this.alpha=0时的MC不可见,当是依然可以被单击碰撞,而用this.visible=false时就不可以再有单击碰撞6当鼠标隐藏的时候,而用手,笔或者其它MC跟随鼠标移动操作时,有时移动到按钮上时要让鼠标可见让跟随MC隐藏起来.可以这样做,可以设一个透明的MC在按钮上,跟随MC在按钮和透明MC之间.当鼠标移上透明MC时就可以让跟随MC隐藏,鼠标显示. 当鼠标移开透明MC时就可以让跟随MC显示,鼠标隐藏.还有另一种方法就是一直循环帧听指定区域.7当在文本文档里面有一个字符要与其它的不一样,可以用TextFormat和setTextFormat比如string=”(A) I miss you!” 要让”A”为红色其它为黑色然后用文本框txt显示可以这样做var format:TextFormat = new TextFormat();format.color = 0xFF0000;txt.setTextFormat(format,1,2);8当FLASH无法导出的时候请检查一下,flsah里面的文本是否有加粗,(简体版中使用此方法)9用低版本的FLASH画的图,转成高版本FLASH9时不能真接写AS3的代码和使用AS3的类,解决方法是,新建一个空白档,然后把低版本的FLASH里面所有图复制到新建的空白档中去,用这个空白的档来制作.10计算任意一个50到100或者-50到-100的数,方法是(Math.random() * 50 + 50) * Math.random() > 0.5?1:-1;11得到一个范围内的随机数而不重复的方法下面是得到100以内的随机不重复的数totalNum=100orderNumBox=new Array()randomNumBox=new Array()for (var i=0; i < totalNum; i++) {orderNumBox.push(i);}}for (var i=0; i < totalNum; i++) {var num=orderNumBox[Math.floor(Math.random() * orderNumBox.length)];randomNumBox.push(num);orderNumBox.splice(orderNumBox.indexOf(num),1);}12对文本框中的文字整体或部分更改属性可以用setTextFormat如下例子var format:TextFormat = new TextFormat();format.size = 12;this.inputTxt.setTextFormat(format,0,inputTxt.length);//从第0个到最后一个都改变了大小this.inputTxt.defaultTextFormat = format;//只改变最后面一个大小13很多情况下用鼠标的点去碰撞是比较有用的,比如你要拖动很多个MC与其它很多个MC 碰撞的时候这个就很有用了for (var i=1; i<=12; i++) {var tObj=this["t" + i];if (tObj.hitTestPoint(this.mouseX,this.mouseY)) {tObj.nextFrame();} else {tObj.prevFrame();}}14 如何得到FLASH本身的URL,14.1 as2.0 是var url=_url14.2 as3.0 是var url=stage.loaderInfo.url15 如何对得到的FLASH本身的URL解碼15.1 as2.0 是url=unescape(url) 反编码用escape(url)15.2 as3.0 是var url=stage.loaderInfo.url 反编码用encodeURI (url)16,求相对路径的方法url=decodeURI(this.loaderInfo.url)if (stIndexOf("\\")!=-1) {url=url.substr(0,stIndexOf("\\")+1);} else {url=url.substr(0,stIndexOf("/")+1);}url求出来则为相对路径17停止所有声音, as2.0是真接用stopAllSounds() as3.0是用SoundMixer.stopAll()18 flash插入IE中后要用FLASH的按钮关闭IE,方法As2 和As3的方法是一样的import flash.external.ExternalInterfaceExternalInterface.call("window.opener=null,window.close()")19 flash插入IE中后要使IE全屏,方法<param name="allowFullScreen" value="true" />加在IE中,其实当FLASH生成HTML时会有一句<param name="allowFullScreen" value="false" />找到它并且把false改成true在FLASH里面加入b1.addEventListener(MouseEvent.CLICK,goFullScreen)b2.addEventListener(MouseEvent.CLICK,exitFullScreen)function goFullScreen(event:MouseEvent):void{stage.displayState = StageDisplayState.FULL_SCREEN;}function exitFullScreen(event:MouseEvent):void{stage.displayState = StageDisplayState.NORMAL;}要全屏就必需要用鼠标或键盘触发FLASH才可以。
AS3.0百条实用小知识
【鼠标坐标】mouseX mouseY【检查变量类型并返回布尔值】is【检查变量类型并返回类型】typeof【检查对象类型并返回该对象】as【是数字但不是有效数字问题】var quantity:Number = 15 - "rabbits";trace(typeof quantity); //显示: "number" , 但它是NaN (not a number) trace(quantity is Number); //truetrace(quantity != NaN); //false//使用isNaN()函数检测:isNaN(quantity); //true//检测变量是否内含有效数字:!isNaN(quantity); //false【Timer类注意事项】不要认为Timer可以极其准确;使用Timer时间间隔不要低于10毫秒.【检测播放器版本】Flash.system.Capabilities.version对于8.5版以前的任何Flash Player版本,这种方法都不适用.【判断客户端系统】Flash.system.Capabilities.os【检测播放器类型】Flash.system.Capabilities.playerType可能的值有:"StandAlone",用于独立的Flash Player"External",用于外部的Flash Player 或处于测试模式下"PlugIn",用于Flash Player 浏览器插件"ActiveX",用于Microsoft Internet Explorer 使用的Flash Player ActiveX 控件【检测系统语言】nguage【判断用户是否启用了IME(输入法编辑器)】Flash.system.IME.enabled【检测屏幕的分辨率】Flash.system.Capabilities.screenResolutionXflash.system.Capabilities.screenResolutionY【把弹出窗口居中的算法】X = (舞台宽/2)-(窗口宽/2)Y = (舞台高/2)-(窗口高/2)【控制影片配合Player的方式,包括缩放问题】stage.scaleMode可供选择值:Flash.display.StageScaleMode【舞台的对齐方式】stage.align可供选择值:Flash.display.StageAlign【隐藏Flash Player的右键菜单】stage.showDefaultContextMenu = false;【检测系统是否具有音频功能】Flash.system.Capabilities.hasAudio【检测播放器是在具有MP3解码器的系统上运行,还是在没有MP3解码器的系统上运行】Flash.system.Capabilities.hasMP3【检测播放器能(true) 还是不能(false) 播放流式视频】Flash.system.Capabilities.hasStreamingVideo【检测播放器是在支持(true) 嵌入视频的系统上运行,还是在不支持(false) 嵌入视频的系统上运行】Flash.system.Capabilities.hasEmbeddedVideo【检测播放器能(true) 还是不能(false) 对视频流(如来自 Web 摄像头的视频流)进行编码】Flash.system.Capabilities.hasVideoEncoder【显示Flash Player 中的"安全设置"面板】flash.system.Security.showSettings();可供选择项:flash.system.SecurityPanel【数字的不同进制之间的转换】parseInt(str:String, radix:uint = 0):Number 返回十进制的数,参数radix表示要分析的数字的基数.如果省略radix,就默认为10,除非字符串的开头是"0x","0X"或"0":trace(parseInt("0x12")); //设定radix为16,输出:18trace(parseInt("017")); //设定radix为8,输出:15或者使用Number,uint和int对象的toString(radix)方法.【使用Math.round()对一个数取整,四舍五入】Math.round()trace(Math.round(204.499)); //输出:204trace(Math.round(401.5)); //输出:402【使用Math.floor()对一个数向下取整,就是只要整数部分而不理会小数分】trace(Math.floor(204.99)); //输出:204【使用Math.ceil()对一个数向上取整,只要小数部分不为零,整数部分就加1】trace(Math.ceil(401.01)); //输出:402【产生一个随机数】使用Math.random()产生一个伪随机数n,其中0 <= n < 1【把数字取至最近的小数点位,即指定精确度】1. 决定你要取的数字的小数点位数:例如,如果你想把90.337取成90.34,就表示你要取到两位小数点位,也就是说你想取至最近的0.01;2. 让输入值除以步骤1所选的数字(此例为0.01);3. 使用Math.round()把步骤2所计得的值取成最近的整数;4. 把步骤3所得的结果乘以步骤2用于除法的那个值.例如,要把90.337取成两个小数点位数,可以使用:trace(Math.round(90.337/0.01)*0.01); //输出:90.34【把数字取成一个整数的最接近倍数值】例1,这样会把92.5取成5的最近倍数值:trace(Math.round(92.5/5)*5); //输出:95例2,这样会把92.5取成10的最近倍数值:trace(Math.round(92.5/10)*10); //输出:90【在指定数值范围内获得随机数】//可取范围:[min, max]private function randRange(min:Number, max:Number):Number {var randomNum:Number = Math.floor(Math.random() * (max - min + 1)) + min;return randomNum;}【弧度(radian)与度数(degree)之间的转换】从弧度转为度数: degrees = radians * 180 / Math.PI从度数转为弧度: radians = degrees * Math.PI / 180【计算两点之间的距离】勾股定理: c2 = a2 + b2假设有两个影片剪辑mc1和mc2,则它们两点间的距离c为:var c:Number = Math.sqrt(Math.pow(mc1.x - mc2.x, 2) + Math.pow(mc1.y - mc2.y, 2));【模拟圆周运动】已知圆心o(x0, y0),半径r和弧度angle,求圆上任意一点P(x, y)的坐标:x = x0 + (Math.cos(angle) * r);y = y0 + (Math.sin(angle) * r);注意:舞台的x轴正方向水平向右,y轴正方向垂直向下.【模拟椭圆运动】已知圆心o(x0, y0),长轴a,短轴b以及弧度angle,求圆上任意一点P(x, y)的坐标:x = x0 + (Math.cos(angle) * a);y = y0 + (Math.sin(angle) * b);【华氏温度和摄氏温度之间的转换】华氏温度= 摄氏度数* 9 / 5 + 32摄氏温度= (华氏度数- 32) * 5 /9【公斤与磅之间的转换】公斤= 磅* 2.2磅= 公斤/ 2.2【对用户输入的文字进行样式化】使用defaultTextFormat属性,样式会施加至用户键入输入框的文字身上:var formatter:TextFormat = new TextFormat();formatter.color = 0x0000FF; //把文字变成蓝色field.defaultTextFormat = formatter;【对现有文字的一部分进行样式化】TextFormat.setTextFormat(format:TextFormat, beginIndex:int = -1, endIndex:int = -1):void【设定文字框的字体】例子:HTML: field.htmlText = "<font face='Arial'>Formatted text";TextFormat: formatter.font = "Arial";CSS: P{ font-family: Arial; }也可以使用以逗号隔开的字体清单: formatter.font = "Arial, Verdana, Helvetica";注意:字体和字体群组不同.字体群组有三种: _sans,_serif以及_typewriter._sans群组一般就是指Arial或Helvetica这种字体;_serif群组一般就是指Times或Times New Roman这种字体;_typewriter群组一般就是指Courier或Courier New这种字体.【嵌入字体】使用[Embed]后设标签.[Embed]后设标签应该出现在ActionScript文件中,处于类宣告之外.你可以内嵌True Type字体或系统字体.内嵌TrueType字体时的语法:[Embed(source="pathToTtfFile", fontName="FontName", mimeType="application/x-font-truetype")]pathToTtfFile: ttf文件的路径,TrueType字体的路径可以是相对的,也可以是绝对的; FontName: 字体名称;内嵌系统字体的语法:[Embed(systemFont="Times New Roman", fontName="Times New Roman", mimeType="application/x-font-truetype")]fontName: 以相同名称作为实际系统字体名称.注意: 在使用嵌入字体时,要把TextField的embedFonts属性设为true,这样TextField 只能用内嵌字体了.如果你试着替embedFonts设为true的TextField使用设备字体,什么都不会显示.如果embedFonts设为true,就无法指定以逗号相隔的字体清单.【建立可以旋转的文字】使用内嵌字体.当你旋转文字框时,设备字体就会消失.【显示Unicode文字】1. 从外部来源载入Unicode文字;2. 假如你的编辑器支持Unicode(如Flex Builder),则可以直接在ActionScript程序中使用该字符;3. 使用Unicode转义字符,ActionScript里所有Unicode转义字符都以u开头,后面再跟四位十六进制数字.注意: 如果你想取得Unicode字符,在Windows下使用: 开始>所有程序>附件>系统工具>字符映射表.【把Flash Player的焦点带给文字框】stage.focus = field;把焦点移除:stage.focus = null;注意: 当.swf文件首次载入至网页浏览器时,并没有焦点.因此,以程序的方式把焦点指定给Flash应用程序的一个元素前,必须先把焦点移至Flash Player.【以ActionScript选取文字】使用TextField.setSelection(beginIndex:int, endIndex:int):void为了可以正常选取文字,文字框必须具有焦点:stage.focus = field; //把焦点设给文字框field.text = "This is example text"; //设定文字field.setSelection(0, 4); //把"This"这个单词以高亮显示使用只读的selectionBeginIndex和selectionEndIndex属性访问所选取的字符范围的索引.。
flash随机数
用flash脚本语言做,场景中放一个按钮和一个动态文本,变量名为a,效果为:点1下按钮,产生一个1-10的随机数字,不重复,将这个数字由动态文本出示,10个数字都出现过后停止,(也就是点击10次按钮后无效),var numArr:Array = [1,2,3,4,5,6,7,8,9,10];function getNum(){if(numArr.length<=0){return -1;}return numArr.splice(Math.floor(Math.random()*numArr.length),1)[0]; }上以代码,每次想要得到一个1-10之间的数字时就调用一个getNum();其返回值就是了。
当返回值为-1时,则说明产生了10个数字了,此时将按钮的enabled 设置成false即可。
由于考虑as2.0与as3.0的问题,代码写成as2.0和as3.0都适用的了var numArr:Array = [1,2,3,4,5,6,7,8,9,10];function getNum(){if(numArr.length<=0){return -1;}return numArr.splice(Math.floor(Math.random()*numArr.length),1)[0];}button.onRelease = function(){var num = getNum();if(num<0){button.enabled = false;return;}a = num;}以上代码复制至帧即可其他回答共1条var pressDown=true//btn是按钮事例名,学习群66982752btn.onRelease=function(){if(pressDown){//停止脚本}else{//播放}pressDown=!pressDown}random 写不重复随机数的方法目的:一个类似洗牌的操作,即随机产生54个不重复的数原理:地上有一排砖,共54块,每块上都按顺序标着号码,1,2,3,4,5,6,7.。
VB生成不重复的随机数
For i = 1 To 10
A(i) = i
Next
For i = 1 To 10 '数组打乱
t = A(i)
k = Fix(Rnd * 10) + 1
A(i) = A(k)
A(k) = t
Next
For i = 1 To 8 '从M中随机取出N个数,不重复
B(i) = A(i)
Next
Label1.Caption = Join(B(), " , ")
p = 0: ps = 1
Do Until p >= n
i = CLng(Rnd * (MAX_N - p))
sTemp = CStr(Ary(i))
Mid$(s, ps, Len(sTemp)) = sTemp
Dimension(i) = Fix(Rnd * 10) + 1
GoTo A
End If
Next j
Next i
Label1.Caption = Join(Dimension(), " , ")
2.只需要得到10个无序排列的数字即可,没必要去一直产生随机数,只要打乱顺序即可。在数组a中加入10个数字,然后开始for循环10次,每次产生一个10以内的随机数,然后将循环次数i与随机数的位置互换。速度:n
'================================================================================================
简单随机抽样的SAS实现
简单随机抽样的SAS实现1 SURVEYSELECT 过程该过程提供了很多方法,用于基于概率的随机样本的选择。
基本命令语句如下:Proc surveyselect data=<SAS-data-set>method=srs n=<samplesize>out=<SAS-data-set>seed=number;run;n是指抽样样本量。
SEED指定一个W2**31-1的正整数,用该值作为随机数发生器的初始数值,以便在下次运行该程序时得到的结果不变。
举例:在1000个数据中随机抽取100个。
Data a;Do i= 1 to 1000;output;end;run;/*产生1-1000共1000个数字*/proc surveyselect data=a method= srs n=100 out=bseed=25070419;run;proc print data=b;run;备注:(1),如果没有指定随机数种子(seed),则SAS程序会使用计算机的时间作为种子。
可以使用seed选项设定随机数初始种子。
Seed的值必须是一个正整数,否则SAS会使用计算机的时间作为种子(零或负整数的情况),或者出错(小数的情况)。
(2).如果我们只需要保留其中的某几个字段,则可以使用id语句。
(3)在实际应用场景中,有时候需要独立重复抽取多组样本,这时可以使用rep选项。
SAS程序会以rep设定的值独立重复抽取若干次样本,每组样本的容量是sampsize或n选项指定的值。
(4)样本容量的另一种表述是其占总体的比例。
比如,抽取10%的样本。
这时我们使用samprate或rate替代sampsize。
Samprate的值可以是正小数,也可以是正整数。
当samprate的值是正小数时,其值在(0, 1]之间,不可为零;为1时表示100%。
当samprate是正整数时,表示相应的百分比,如10表示10%,需要注意的是,整数1表示100%,而不是1%。
按键精灵脚本开发教程:随机数写法
按键精灵脚本开发教程:随机数写法来源:按键学院【按键精灵】小编今天要分享三种随机数不重复的方法 ~快来围观~常规方法将随机到的数字放到数组里,然后每次随机产生的数字都和数组里已有的数字进行比较,如果有重复的则重新生成。
代码:(生成10个范围在10以内的随机数)Dim TmpDat(10)For i = 0 To 9RandomizeTmpRnd = Int(rnd * 10)For j = 0 To i - 1If TmpDat(j)=TmpRnd Theni = i - 1 : TmpBol = TRUEEnd IfNextIf TmpBol Then TmpBol = False Else TmpDat(i) = TmpRnd : TracePrint TmpRndNext分析:1、Dim TmpDat(10) //例如,需要产生10个不重复的数字,则定义数组,数组元素个数为102、For i = 0 To 9//由于数组的最小下标是从0开始的,所以循环从0开始到9,循环10次3、Randomize //随机函数初始化4、TmpRnd = Int(rnd * 10) //我们生成0-10范围内的数字,便于查看效果5、For j = 0 To i - 1 //再做一次循环,将当前生成的随机数与前面生成的随机数一一进行比较。
例如:i=5,说明之前已经执行过5次,数组TmpDat里已经有了5个元素,它们的下标从0-4 。
当我们想要查看当前随机到的数字有没有重复,就需要和前面的产生的随机数进行比较。
所以从0循环到i-1 ( i 自身就不需要和自身比了,所以这里需要减1,排除自身)。
6、If TmpDat(j)=TmpRnd Then//如果生成的随机数在数组里已经存在i = i - 1 : TmpBol = TRUE//则i的值减去1,并且做一个标记,tmpbol设置为true End If7、If TmpBol Then TmpBol = False Else TmpDat(i) = TmpRnd : TracePrint TmpRnd //如果TmpBol 是真的,说明随机数字重复了,不做赋值判断,将tmpbol的赋值假。
js中获取随机整数的方法
js中获取随机整数的方法在JavaScript中,获取随机整数的方法有多种,下面将详细介绍其中三种常用的方法。
1. Math.random()方法Math.random()方法返回一个0到1之间的随机数,我们可以通过一定的计算来得到我们需要的随机整数。
具体步骤如下:(1)使用Math.random()方法获取一个0到1之间的随机数,例如:var randomNum = Math.random();(2)将这个随机数乘以我们需要的最大值,例如:var maxNum = 100; var randomNum = Math.random() * maxNum;(3)使用Math.floor()方法将上一步得到的结果向下取整,即可得到我们需要的随机整数。
例如:var randomInt =Math.floor(randomNum);完整代码如下:```function getRandomInt(maxNum) {var randomNum = Math.random() * maxNum;var randomInt = Math.floor(randomNum);return randomInt;}```2. parseInt(Math.random()*maxNum)方法这种方法与第一种方法类似,只是使用了parseInt()函数来实现向下取整。
具体步骤如下:(1)使用Math.random()方法获取一个0到1之间的随机数,并将其乘以我们需要的最大值,例如:var maxNum = 100; var randomNum = Math.random() * maxNum;(2)使用parseInt()函数将上一步得到的结果向下取整,并返回结果。
例如:var randomInt = parseInt(randomNum);完整代码如下:```function getRandomInt(maxNum) {var randomNum = Math.random() * maxNum;var randomInt = parseInt(randomNum);return randomInt;}```3. 使用位运算符实现这种方法使用了位运算符来实现向下取整,比使用parseInt()函数更加高效。
FLASH-as3.0常用代码
FLASH as3.0常用代码1.按钮事件(新版)步骤:实现第一帧暂停:右击第一帧,点动作,写代码stop();实现点按钮开始:放一个按钮(可以在窗口菜单->公用库->按钮里找一个)在第一帧的舞台上,属性面板里给按钮取名:实例名称bt1 ,右击第一帧,点动作,写代码:bt1.addEventListener(MouseEvent.CLICK ,f1); function f1(evt:MouseEvent){gotoAndPlay(2);}//////////////////////////补充:as2(老版)中的按钮事件实现第一帧暂停:右击第一帧,点动作,写代码stop();实现点按钮开始:放一个按钮(可以在窗口菜单->公用库->按钮里找一个)在第一帧的舞台上,右击按钮,点动作,写代码:on (release){ gotoAndPlay(2); }//////////////////////////2.按钮超链接linkButton.addEventListener(MouseEvent.CLICK, gotoAdobeSite);function gotoAdobeSite(event:MouseEvent):void {var adobeURL:URLRequest = new URLRequest("");navigateToURL(adobeURL);}3.随机数Math.random ()输出时间var time1:Date=new Date(); t1.text=time1.toLocaleTimeString(); 4.画线1graphics.lineStyle(3,0xff0000,0.3);graphics.moveTo(300,100);graphics.lineTo(200,300);画线2graphics.lineStyle(1,0xff0000,1);for(var i:int=0;i<100;i++){graphics.lineTo(Math.random()*600,Math.random ()*400);}5. 画三角形var m1:MovieClip = new(MovieClip); //声明一个新的mc类bt1,并用new来构造它m1.graphics.lineStyle(2, 0x990000, .75);//使用bt1的graphics属性设置线条粗细,颜色,透明度m1.graphics.beginFill(0x00FF00);//以下的代码是用graphics画三角形。
AS3.0百条实用小知识
除非条件表达式前半部为假,否则,ActionScript不会再去求算逻辑OR运算符的后半部,如果前半部为真,整个条件表达式一定为真.
总结:使用逻辑AND(&&)时,把结果最可能为false的表达式放到前面;使用逻辑OR(||)时,把结果最可能为true的表达式放到前面.
【super关键字的使用】
super(); //父类的构造函数,只能在类实例构造函数内部使用
super.propertyName; //调用父类的属性,属性需要声明为public或protected
super.methodName(); //调用父类的方法,方法需要声明为public或protected
【建立常数,使用关键字const而不是var】
static public const EXAMPLE:String = "example";
【检测播放器版本】
Flash.system.Capabilities.version
对于8.5版以前的任何Flash Player版本,这种方法都不适用.
Flash.system.IME.enabled
【检测屏幕的分辨率】
Flash.system.Capabilities.screenResolutionX
flash.system.Capabilities.screenResolutionY
【把弹出窗口居中的算法】
X = (舞台宽/2)-(窗口宽/2)
trace(quantity is Number); //true
trace(quantity != NaN); //false
//使用isNaN()函数检测:
AS3.0案例教程
AS3.0
视觉编程
类绑定 多媒体控制 调用其他
案例1星星
1、熟悉as3.0代码基本编写思路 2、库元件的类绑定操作 3、ColorTransform与hitTestObject
3
案例2碰撞小球
库元件绑定深入认识 1、文档类与flash文件绑定后,类文件内可以直接 通过实例名调用指向影片元件 2、时间轴代码:直接运用实例名 3、hitTestPoint和hitTestObject用法
4)为5时,显示卡片图案 gotoAndStop(frame); 5)还有什么需要改进?
要实现中心翻转,影片元件中与注册点 对齐位置要改,坐标计算参考量要改
31
期末巩固练习
5.2卡片浏览时间 卡片翻上以后,留有2秒钟时间供玩家记忆,然 后翻黑
1)使用Timer类完成此功能
2)函数添加在哪里?
两张翻过来的卡片不匹配时,内层
状态4配对成功,消除 通过卡片的标号值判断
2、游戏逻辑
if (firstcard=null){ 显示所点击第一张卡片 } else if(firstcard == thiscard) { 第一张显黑 置为空}
期末巩固练习
重复点击
else if (secondcard=null) { 显示第二张卡片 if (firstcard.cardface == secondcard.cardface) { 从显示列表删除这两张卡片removeChild(对象) } else{ 两张卡片显黑 重新显示第一张 } } 27
24
期末巩固练习
2、游戏逻辑
状态1准备选第1张 firstcard=null secondcard=null
25
生成不重复的随机数的三种方法
⽣成不重复的随机数的三种⽅法下⾯我以⽣成1-10之间的10个不重复的随机数为例介绍⽣成不重复的随机数的三种⽅法:1,通过while循环来实现通过while循环不停的⽣成随机数,直到⽣成⼀个不重复的为⽌,这种⽅法⽐较容易想到,但是效率也⽐较低下,实例代码如下:static void Main(string[] args){int[] result = new int[10];int tmp = -1;Random random = new Random();bool repeat = false;for (int i = 0; i < 10; i++){repeat = true;while (repeat){repeat = false;tmp = random.Next(1, 11);for (int j = 0; j < i; j++){if (tmp == result[j]){repeat = true;break;}}}result[i] = tmp;}for (int i = 0; i < 10; i++)Console.WriteLine(result[i].ToString());}2,通过for循环来实现⽅法1使⽤了多处循环嵌套,效率⼗分低下,所以我应⽤⼀定的技巧来减少循环嵌套,来达到提⾼程序效率的⽬的。
主要思路是如果检测到重复,就把循环变量减1,这样来重新进⾏⼀次循环,重新⽣成⼀个随机数,直到⽣成⼀个不重复的随机数为⽌,实例代码如下:static void Main(string[] args){int[] result = new int[10];int tmp = -1;Random random = new Random();bool repeat = false;for (int i = 0; i < 10; i++){repeat = false;tmp = random.Next(1, 11);for (int j = 0; j < i; j++){if (tmp == result[j]){repeat = true;break;}}if (!repeat){result[i] = tmp;}else{i = i - 1;//循环变量-1}}for (int i = 0; i < 10; i++)Console.WriteLine(result[i].ToString());}这个⽅法减少了⼀层循环嵌套,效率上有⼀定的改善!3,通过随机排序来实现这种⽅法彻底的颠覆了⽅法1和2的基本思路,先初始化⼀个包含数字1-10的数组,然后每次循环取⼀个随机位置,将这个位置的元素和最后⼀个位置的元素交换!实例代码如下:static void Main(string[] args){int[] result = new int[10];for (int i = 0; i < 10; i++)result[i] = i + 1;for (int j = 9; j > 0; j--){Random r = new Random();int index = r.Next(0, j);int temp = result[index];result[index] = result[j];result[j] = temp;}for (int i = 0; i < 10; i++)Console.WriteLine(result[i].ToString());}这种⽅法消除了循环嵌套,效率上获得了进⼀步的改善,但是也有⼀定的限制,如果要⽣成5个1-10之间的随机数,那这种打乱顺序的⽅法就⽆法使⽤了!总结:⽅法1效率⽐较低下,⼀般不推荐使⽤!⽅法2⽐较通⽤,效率⾼于⽅法1,但是效率低于⽅法3⽅法3虽然效率⽐较⾼,但是只能应⽤与特定的情况下!请⼤家多多指教啊!。
python随机生成数字不重复数字的方法
Python 是一种流行的编程语言,它具有强大的随机数生成功能。
在实际编程中,有时我们需要生成一些不重复的随机数字,这就需要用到一些特殊的方法来实现。
本文将介绍一些在 Python 中生成不重复随机数字的方法,帮助读者更好地了解和应用 Python 中的随机数生成功能。
一、使用 random 模块生成不重复的随机数字Python 中的 random 模块提供了丰富的随机数生成功能,可以用于生成不重复的随机数字。
我们可以通过调用 random 模块的相关函数来实现这一目的。
1. 使用 random.sample() 函数random.sample() 函数可以在指定范围内生成一组不重复的随机数。
我们可以使用以下代码来生成 10 个不重复的随机数:```pythonimport randomrandom_list = random.sample(range(1, 100), 10)print(random_list)```以上代码将会在 1 到 100 之间生成 10 个不重复的随机数,并将其打印输出。
2. 使用 random.shuffle() 函数random.shuffle() 函数可以用于对指定序列进行洗牌操作,从而实现生成一组不重复的随机数。
我们可以使用以下代码来实现这一目的:```pythonimport randomnum_list = list(range(1, 100))random.shuffle(num_list)random_list = num_list[:10]print(random_list)```以上代码将会对 1 到 100 之间的数字进行洗牌,并取前 10 个数字作为不重复的随机数输出。
3. 使用 random.choice() 函数random.choice() 函数可以用于在指定序列中随机选择一个元素,我们可以利用这一特性来生成一组不重复的随机数。
我们可以使用以下代码来实现这一目的:```pythonimport randomnum_list = list(range(1, 100))random_list = [random.choice(num_list) for _ in range(10)] print(random_list)```以上代码将会在 1 到 100 之间的数字中随机选择 10 个不重复的数字输出。
flash as3.0 常用代码
注意要将网页中的flash的ID号命名为"links"
加入收藏夹
on (release) {
getURL("BLOCKED SCRIPTvoid window.external.AddFavorite("","网页");", "_self", "POST");
ball.x=centerX+Math.cos(angle)*radius;
ball.y=centerY+Math.sin(angle)*radius;
angle+=speed;
}
椭圆旋转:
public function onEnterFrame(event:Event):void {
ball.x=centerX+Math.cos(angle)*radiusX;
角的正切值 = 对边 / 邻边
角度制与弧度制的相互转换:
弧度 = 角度 * Math.PI / 180
角度 = 弧度 * 180 / Math.PI
计算两点间距离:
dx = x2 – x1;
dy = y2 – y1;
dist = Math.sqrt(dx*dx + dy*dy);
缓动公式:
sprite.x += (targetX - sprite.x) * easing;//easing为缓动系数变量
}
// fantastic ! //
var bar:ListCollectionView = new ListCollectionView( ListCollectionView( ac ).list );
VB生成不重复随机数
VB生成不重复的随机数VB生成不重复的随机数我的建议是:第一步、先做一个数组,存上这35个数(可以不是连续的数,也可以是人名、字符串什么的);第二步、随机生成一个1-35之间的数,输出;第三步:把这个数和数组的第一个单元交换;第四步、从数组的第2-35之间随机抽取第二个数,输出;第五步、把这随机抽取的第二个数和数组的第二个单元内容呼唤;第六步、随机抽取第三个数,输出。
重复到从第35-35个数之间随机抽取一个数,这时直接输出最后一个就行了。
程序如下(VB6):工程里默认的窗体上,画一个Command1,粘贴程序:option explicitprivate vArray(1 to 35) as currency '定义数组个数private sub command1_click()testend subprivate sub InitArray()dim i as long'给数组赋值for i=1 to 35varray(i)=inext iend subprivate sub Test()dim iStart as longdim iPos as longdim vTemp as currencydim sReturn as stringInitArrayrandomize timer '设置随机因子,使其每次运行程序的随机数都不一样iStart=1doiPos=int(rnd*(ubound(vArray)-iStart+1))+iStart '产生iStart到35(35取自vArray 的上标)之间的整数sReturn=sReturn & vArray(iPos) & vbcrlf '输出'交换单元内容vTemp=vArray(iStart)vArray(iStart)=vArray(iPos)vArray(iPos)=vTempiStart=iStart+1 '下次随机生成时,少生成一个if iStart>=ubound(vArray) then'最后一个了,直接输出sReturn=sReturn & vArray(ubound(vArray))Exit Doend ifif iStart>7 then exit do '如果需要生成几个数,就把7改成几,大于数组元素的个数,将输出速度的元素个数(这个例子是35)Loopmsgbox sReturn 'msgbox 输出结果end sub'================================================================ =============================='方法二Private Sub Command1_Click()Dim a(35) As IntegerFor i = 0 To 35way1:Randomizea(i) = Int(Rnd() * 36) + 1If i > 1 ThenFor p = 0 To i - 1If a(p) = a(i) Then '‘与前面的对比,如果有重复,重新随机GoTo way1End IfNext pEnd IfPrint a(i); '打印Next iPrint "" '打印End Sub'================================================================ =========================='方法三如果楼主是要产生0-9等10个不重复的随机数的话,在随机数范围和个数相等的情况下,楼上的方法都无异于散弹打鸟。
ASP生成随机数ASP生成不重复随机数
ASP⽣成随机数ASP⽣成不重复随机数ASP⽣成随机数:复制代码代码如下:Randomize '纯随机,不重复Response.write Int((999999999 * Rnd) + 111111111) '⽣成111111111到999999999之间随机数ASP不重复随机数:⽅法⼀:已测使⽤的时候需要注意⾥⾯的分割字符串的字符。
复制代码代码如下:<%'⽣成的是⼀个不重复的数组Function GetRnd(lowerNum,upperNum)Dim unit,RndNum,Fun_Xunit = upperNum - lowerNumRedim MyArray(unit)For Fun_I=0 To unitmyArray(Fun_I)= lowerNum + Fun_INextFor Fun_I=0 To round(unit)RndNum = getRndNumber(Fun_I,unit)Fun_X = myArray(RndNum)myArray(RndNum)=myArray(Fun_I)myArray(Fun_I)=Fun_XNextGetRnd = Join(myArray)End FunctionFunction getRndNumber(lowerbound,upperbound)RandomizegetRndNumber=Int((upperbound-lowerbound+1)*Rnd+lowerbound)End FunctionResponse.Write GetRnd(1,1000)%>⽅法⼆:复制代码代码如下:<%function rndarray(istart,iend,sum)dim arrayid(),i,j,blnre,temp,iloop,eloopredim arrayid(sum-1)i=0iloop=0eloop=0blnre=falserandomizedo while i<sumtemp=int(rnd*(iend-istart+1)+istart)if i=0 thenarrayid(0)=tempi=i+1iloop=iloop+1elsefor j=0 to i-1if arrayid(j)=temp thenblnre=trueiloop=iloop+1exit for'这⼀句很重要,防⽌多余的循环elseiloop=iloop+1end ifnextif blnre=false thenarrayid(i)=tempi=i+1elseblnre=falseend ifend iflooprndarray=join(arrayid)end functionresponse.write rndarray(1,5,1) '开始数字,结尾数字,⽣成多少个%>。
iar的随机数
iar的随机数
在 IAR 中,`rand()`函数可用于生成随机数。
该函数的内部实现是用线性同余法做的,是伪随机数,因其周期特别长,故在一定的范围里可看成是随机的。
`rand()`函数返回的随机数值的范围在0至`RAND_MAX`间,`RAND_MAX`的范围由返回数据的类型决定,在 IAR for arm 中返回类型为`int`(4byte)。
0~`RAND_MAX`每个数字被选中的机率是相同的。
若用户未设定随机数种子,系统默认的随机数种子为1。
`rand()`产生随机数算法每次执行时是相同的。
若要不同,需用真随机的数来初始化它,即使用函数`sran()`。
`srand()`函数用于设置随机数的种子。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
as3获得不重复的随机数的不同写法方法一:
var b:Array =new Array();
for (var i:int=0; i<10; i++) {
b.push(i);
}
for (var j:int=0; j<10; j++) {
var index:int = Math.round(Math.random()*b.length);
b.splice(index,1);
trace(b[index]);
}
/* splice(start,deleteCount)方法:给数组从start(索引)开始删除deleteCount个元素。
此方法会修改数组但不制作副本。
*/
AS3取随机数方法二
今天需要用到随机数,我还以为像java有个随机数类,结果在Math 类里面,我需要取的是整数,0-15,取10个,不能重复,代码如下:
var itn:Array = new Array();
while(itn.length != 10){
//最主要的代码就是下面这句,你要取多大,后面模一下,我觉得这样挺方便的~ var temp:int = (Math.random()*1000>>0)%16;
trace("这次出来的是: "+temp);
if(itn.length != 0){
for(var h:int = 0;h<itn.length;h++){
if(temp == itn[h]){
h = 0;
temp =
(Math.random()*1000>>0)%16;
}
}
}
itn.push(temp);
}
trace("全部数字是: "+itn);
【AS3】取N个不重复的随机数方法三
function RandomArray(n:int):Array {
var my_array:Array=new Array();
var i:int=0;
for (i=0; i<n; i++) {
my_array.push(i);
}
for (i=0; i<n; i++) {
var tmp1:int=Math.random()*n;
var tmp2:int=my_array[i];
my_array[i]=my_array[tmp1];
my_array[tmp1]=tmp2;
}
return my_array
}
trace(RandomArray(100));
ActionScript 3.0 不重复随机数方法四
function RandomNum(Num:Number):Array{
var arr:Array = new Array();
for(var num:Number = 0; num < Num; num++){ arr.push(num);
}
arr.sort(function():Number{
return Math.random()>0.5?-1:1});
return arr;
}
trace(RandomNum(5));
//输出类似:3,2,4,0,1的数组
as3 取随机数
function GenerateCheckCode():String {
var ran:Number;
var number:Number;
var code:String;
var checkCode:String="";
for (var i:int=0; i<4; i++) {
ran=Math.random();
number=Math.round(ran*10000);//取四位整数如5845
if (number%2==0) {
code = String.fromCharCode(48+(number % 10));//偶数取0~9 整数
} else {
code = String.fromCharCode(65+(number % 26)) ;//奇数取A~Z字母
}
checkCode+=code;
}
return checkCode;
}
trace(GenerateCheckCode());
/*fromCharCode () 方法返回一个字符串,该字符串由参数中的Unicode 字符代码所表示的字符组成*/
////AS3 随机数
function randRange(min:Number, max:Number):Number { var randomNum:Number = Math.floor(Math.random() * (max - min + 1)) + min;
return randomNum;
}
trace(randRange(6,10));
as3.0乱序
var aa:Array =[1,2,3,4,5,6];
trace(aa);
aa.sort(f,16);
trace(aa);
function f(a,b) {
var xx=Math.floor(Math.random() * 3 - 1);
return xx;
}。