flash下随机生成中文和字符
发布时间:2020-12-15 17:30:17 所属栏目:百科 来源:网络整理
导读:protected var _str1:String,_str2:String,_str3:String,_str4:String;span style="white-space:pre"/spanspan style="white-space:pre"/span//获取一个随机的范围整数值span style="white-space:pre"/spanprotected function integer(value:Number):intspan
protected var _str1:String,_str2:String,_str3:String,_str4:String; <span style="white-space:pre"> </span> <span style="white-space:pre"> </span>//获取一个随机的范围整数值 <span style="white-space:pre"> </span>protected function integer(value:Number):int <span style="white-space:pre"> </span>{ <span style="white-space:pre"> </span>return Math.floor(number(value)); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span> <span style="white-space:pre"> </span> <span style="white-space:pre"> </span>//获取一个随机的范围Number值 <span style="white-space:pre"> </span>protected function number(value:Number):Number <span style="white-space:pre"> </span>{ <span style="white-space:pre"> </span>return Math.random() * value; <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span> <span style="white-space:pre"> </span>protected function randomRange(restrictList:Array):Number <span style="white-space:pre"> </span>{ <span style="white-space:pre"> </span>var list:Array = new Array(); <span style="white-space:pre"> </span>var length:int = restrictList.length; <span style="white-space:pre"> </span>if (length % 2 != 0 || length == 0) <span style="white-space:pre"> </span>{ <span style="white-space:pre"> </span>throw new Error("参数错误!无法获取指定范围!"); <span style="white-space:pre"> </span>}//将所有可能出现的随机数存入数组,然后进行随机 <span style="white-space:pre"> </span>for (var i:int = 0; i < length / 2; i ++) <span style="white-space:pre"> </span>{ <span style="white-space:pre"> </span>var begin:int = restrictList[i * 2]; <span style="white-space:pre"> </span>var end:int = restrictList[i * 2 + 1]; <span style="white-space:pre"> </span>if (begin > end) <span style="white-space:pre"> </span>{ <span style="white-space:pre"> </span>var value:Number = begin; <span style="white-space:pre"> </span>begin = end; <span style="white-space:pre"> </span>end = value; <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>for (begin; begin < end; begin ++) <span style="white-space:pre"> </span>{ <span style="white-space:pre"> </span>list.push(begin); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>var result:Number = list[integer(list.length)]; <span style="white-space:pre"> </span> <span style="white-space:pre"> </span>restrictList = null;<span style="white-space:pre"> </span> <span style="white-space:pre"> </span>list = null; <span style="white-space:pre"> </span>return result; <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span> <span style="white-space:pre"> </span>protected function explain(restrict:String,isCodeAt:Boolean = true):Array <span style="white-space:pre"> </span>{ <span style="white-space:pre"> </span>var result:Array = new Array ?; <span style="white-space:pre"> </span>var restrictList:Array = restrict.split(","); <span style="white-space:pre"> </span>var length:uint = restrictList.length; <span style="white-space:pre"> </span>for (var i:int = 0; i < length; i ++) <span style="white-space:pre"> </span>{ <span style="white-space:pre"> </span>var list:Array = restrictList[i].split("-"); <span style="white-space:pre"> </span>if (list.length == 2) <span style="white-space:pre"> </span>{ <span style="white-space:pre"> </span>var begin:String = list[0]; <span style="white-space:pre"> </span>var end:String = list[1]; <span style="white-space:pre"> </span>if (isCodeAt) <span style="white-space:pre"> </span>{ <span style="white-space:pre"> </span>begin = begin.charCodeAt().toString(); <span style="white-space:pre"> </span>end = end.charCodeAt().toString(); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>//此处如果不加1,将不会随机ar[1]所表示字符,因此需要加上1,随机范围才是对的 <span style="white-space:pre"> </span>result.push(Number(begin),Number(end) + 1); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>else if (list.length == 1) <span style="white-space:pre"> </span>{ <span style="white-space:pre"> </span>var value:String = list[0]; <span style="white-space:pre"> </span>if (isCodeAt) <span style="white-space:pre"> </span>{ <span style="white-space:pre"> </span>value = value.charCodeAt().toString(); <span style="white-space:pre"> </span>}//如果范围是1-2,那么整型随机必定是1,因此拿出第一个参数后,把范围定在参数+1,则就是让该参数参加随机 <span style="white-space:pre"> </span>result.push(Number(value),Number(value) + 1); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>list = null; <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>restrictList = null; <span style="white-space:pre"> </span>return result; <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span> <span style="white-space:pre"> </span>protected function getChinese(length:int):String <span style="white-space:pre"> </span>{ <span style="white-space:pre"> </span>var rez:String = ""; <span style="white-space:pre"> </span>for (var i:int = 0; i < length; i++) <span style="white-space:pre"> </span>{ <span style="white-space:pre"> </span>_str1 = String.fromCharCode(randomRange(explain("B-F"))); <span style="white-space:pre"> </span>if (_str1 == "F") <span style="white-space:pre"> </span>{ <span style="white-space:pre"> </span>_str2 = String.fromCharCode(randomRange(explain("0-7"))); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>else <span style="white-space:pre"> </span>{ <span style="white-space:pre"> </span>_str2 = String.fromCharCode(randomRange(explain("0-9,A-F"))); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>_str3 = String.fromCharCode(randomRange(explain("A-F"))); <span style="white-space:pre"> </span>switch (_str3) <span style="white-space:pre"> </span>{ <span style="white-space:pre"> </span>case "A" : <span style="white-space:pre"> </span>_str4 = String.fromCharCode(randomRange(explain("1-9,A-F"))); <span style="white-space:pre"> </span>break; <span style="white-space:pre"> </span>case "F" : <span style="white-space:pre"> </span>_str4 = String.fromCharCode(randomRange(explain("0-9,A-E"))); <span style="white-space:pre"> </span>break; <span style="white-space:pre"> </span>default : <span style="white-space:pre"> </span>_str4 = String.fromCharCode(randomRange(explain("0-9,A-F"))); <span style="white-space:pre"> </span>break; <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span> <span style="white-space:pre"> </span>var _str:String = "0x" + _str1 + _str2 + _str3 + _str4; <span style="white-space:pre"> </span>var byteArr1:ByteArray = new ByteArray(); <span style="white-space:pre"> </span> <span style="white-space:pre"> </span>byteArr1.writeShort(parseInt(_str,16)); <span style="white-space:pre"> </span>byteArr1.position = 0; <span style="white-space:pre"> </span> <span style="white-space:pre"> </span>rez += byteArr1.readMultiByte(2,"gb2312"); <span style="white-space:pre"> </span> <span style="white-space:pre"> </span>byteArr1 = null; <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>return rez; <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span> <span style="white-space:pre"> </span>private function GenerateCheckCode(length:int):String <span style="white-space:pre"> </span>{? <span style="white-space:pre"> </span>//init? <span style="white-space:pre"> </span>var ran:Number;? <span style="white-space:pre"> </span>var number:Number;? <span style="white-space:pre"> </span>var code:String;? <span style="white-space:pre"> </span>var checkCode:String ="";? <span style="white-space:pre"> </span>for(var i:int=0; i<length; i++)? <span style="white-space:pre"> </span>{? <span style="white-space:pre"> </span>ran=Math.random();? <span style="white-space:pre"> </span>number =Math.round(ran*10000); ? ? ? ? ? ?//get result like 0.1234? <span style="white-space:pre"> </span>if(number % 2 == 0)? <span style="white-space:pre"> </span>code = String.fromCharCode(48+(number % 10)); ? ? ? ?//0's ASCII code is 48? <span style="white-space:pre"> </span>else <span style="white-space:pre"> </span>code = String.fromCharCode(65+(number % 26)) ; ? ? ? ?// A's ASCII code is 65? <span style="white-space:pre"> </span>checkCode += code;? <span style="white-space:pre"> </span>}? <span style="white-space:pre"> </span>return checkCode;? <span style="white-space:pre"> </span>} 使用方法如下: var bb:String = getChinese(100) + GenerateCheckCode(100); trace(bb); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |