flash下随机生成中文和字符

来源:互联网 发布:思瑞汽配软件 编辑:程序博客网 时间:2024/06/05 12:02
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);
0 0
原创粉丝点击