一个简单的随机函数工具类,总共提供了9种静态方法来获取不同的随机值
随便写的,如果你还有什么更好的建议,请提出来,谢谢~

index.Random类:
代码:public final class Random
提供了9种静态方法来获取不同的随机值

构造函数:
public function Random()
如果直接实例化该类,将抛出错误

boolean静态属性:
public static function get boolean():Boolean
随机获取一个布尔值,即可能是true,也可能是false

wave静态属性:
public static function get wave():int
随机获取一个正负波动值,即可能是1,也可能是-1

integer静态方法:
public static function integer(num:Number):int
随机获取一个范围中的整数值

number静态方法:
public static function number(num:Number):Number
随机获取一个范围中的Number指

range静态方法:
public static function range(num1:Number,num2:Number,isInt:Boolean = true):Number
isInt:表示是否以整数随机
随机在一个指定范围获取数值

ranges静态方法:
public static function ranges(...args):Number
最后一个参数可以是逻辑值,用处等同于range的isInt参数,默认为true
随机在多个指定范围获取数值

string静态方法:
public static function string(str:String = "0-9,A-Z,a-z"):String
在指定范围随机一个字符

bit静态方法:
public static function bit(num:int,str:String = ""):String
在指定范围随机一个num位的字符串

color静态方法:
public static function color(red:String = "0-255",green:String = "0-255",blue:String = "0-255"):uint
在指定范围随机一个颜色值

举例:

 import index.Random;
trace(Random.boolean+"(随机一个布尔值)");
trace(Random.color()+"(随机一个RGB颜色值)");
trace(Random.color("153-255","0-100","0-100")+"(随机一个偏红的RGB颜色值)");
trace(Random.wave+"(随机一个波动值)");
trace(Random.string()+"(随机一个字符)");
trace(Random.integer(4)+"(随机一个int值)");
trace(Random.number(4)+"(随机一个Number值)");
trace(Random.string("a-z,A-Z")+"(在一个范围随机字符)");
trace(Random.string("我,你,他")+"(在一个范围随机中文字符)");
trace(Random.ranges(5,4,3,-1,-10,-14,true)+"(在多个指定范围随机数值)");
trace(Random.range(4,9)+"(在一个指定范围随机数值)");
trace(Random.bit(8)+"(随机一个八位的字符串)");
trace(Random.bit(16,"0-1")+"(随机一个十六位的二进制)");
trace("…………") //生成一个偏红的颜色色块
var sh:Shape = new Shape();
var rgb:uint = Random.color("204-255","0-153","0-153");
trace(rgb1.toString(16));
sh.graphics.beginFill(rgb);
sh.graphics.drawRect(100,100,100,100);
addChild(sh); //生成一个颜色偏深或者偏淡的颜色色块
var sh1:Shape = new Shape();
var rgb1:uint = Random.color("0-20,240-255","0-20,240-255","0-20,240-255");
trace(rgb1.toString(16));
sh1.graphics.beginFill(rgb1);
sh1.graphics.drawRect(200,100,100,100);
addChild(sh1); /**
* 输出:
* false(随机一个布尔值)
* 8370486(随机一个RGB颜色值)
* 12322387(随机一个偏红的RGB颜色值)
* -1(随机一个波动值)
* E(随机一个字符)
* 3(随机一个int值)
* 1.0007172282785177(随机一个Number值)
* m(在一个范围随机字符)
* 我(在一个范围随机中文字符)
* -14(在多个指定范围随机数值)
* 5(在一个指定范围随机数值)
* idPJav1l(随机一个八位的字符串)
* 1010100101010100(随机一个十六位的二进制)
* …………
* dd5506
* fef003
*/

类源代码:

 package com
{ public final class Random{; public function Random()
{
throw new Error("随机函数工具包无法实例化!");
} //获取一个随机的布尔值
public static function get boolean():Boolean
{
return Math.random() < 0.5;
} //获取一个正负波动值
public static function get wave():int
{
return boolean ? 1 : -1;
} //获取一个随机的范围整数值
public static function integer(num:Number):int
{
return Math.floor(number(num));
} //获取一个随机的范围Number值
public static function number(num:Number):Number
{
return Math.random() * num;
} //在一个范围内获取一个随机值,返回结果范围:num1 >= num > num2
public static function range(num1:Number,num2:Number,isInt:Boolean = true):Number
{
var num:Number = number(num2 - num1) + num1;
if (isInt)
{
num = Math.floor(num);
}
return num;
} //在多个范围获取随机值
public static function ranges(...args):Number
{
var isInt:Boolean = args[args.length - 1] is Boolean ? args.pop():true;
var num:Number = randomRange(args);
if (! isInt)
{
num += Math.random();
}
return num;
} //获取一个随机字符,默认随机范围为数字+大小写字母,也可以指定范围,格式:a-z,A-H,5-9
public static function string(str:String = "0-9,A-Z,a-z"):String
{
return String.fromCharCode(randomRange(explain(str)));
} //生成指定位数的随机字符串
public static function bit(num:int,str:String = "0-9,A-Z,a-z"):String
{
var reStr:String = "";
for (var i:int = 0; i < num; i ++)
{
reStr += string(str);
}
return reStr;
} //获取一个随机的颜色值
public static function color(red:String = "0-255",green:String = "0-255",blue:String = "0-255"):uint
{
return Number("0x" + transform(randomRange(explain(red,false))) +
transform(randomRange(explain(green,false))) +
transform(randomRange(explain(blue,false))));
} //将10进制的RGB色转换为2位的16进制
private static function transform(num:uint):String
{
var reStr:String = num.toString(16);
if (reStr.length != 2)
{
reStr = "0" + reStr;
}
return reStr;
} //字符串解析
private static function explain(str:String,isCodeAt:Boolean = true):Array
{
var argAr:Array = new Array ;
var tmpAr:Array = str.split(",");
for (var i:int = 0; i < tmpAr.length; i ++)
{
var ar:Array = tmpAr[i].split("-");
if (ar.length == 2)
{
var arPush0:String = ar[0];
var arPush1:String = ar[1];
if (isCodeAt)
{
arPush0 = arPush0.charCodeAt().toString();
arPush1 = arPush1.charCodeAt().toString();
}
//此处如果不加1,将不会随机ar[1]所表示字符,因此需要加上1,随机范围才是对的
argAr.push(Number(arPush0),Number(arPush1) + 1);
}
else if (ar.length == 1)
{
var arPush:String = ar[0];
if (isCodeAt)
{
arPush = arPush.charCodeAt().toString();
}//如果范围是1-2,那么整型随机必定是1,因此拿出第一个参数后,把范围定在参数+1,则就是让该参数参加随机
argAr.push(Number(arPush),Number(arPush) + 1);
}
ar = null;
}
tmpAr = null;
return argAr;
} //获取随机范围
private static function randomRange(ar:Array):Number
{
var tmpAr:Array = new Array ;
var length:int = ar.length;
if (length % 2 != 0 || length == 0)
{
throw new Error("参数错误!无法获取指定范围!");
}//将所有可能出现的随机数存入数组,然后进行随机
for (var i:int = 0; i < length / 2; i ++)
{
var i1:int = ar[i * 2];
var i2:int = ar[i * 2 + 1];
if (i1 > i2)
{
var tmp:Number = i1;
i1 = i2;
i2 = tmp;
}
for (i1; i1 < i2; i1 ++)
{
tmpAr.push(i1);
}
}
var num:Number = tmpAr[integer(tmpAr.length)];
tmpAr = null;
ar = null;
return num;
} } }

ActionScript 3.0 自写类整理笔记(十三)——Random类的更多相关文章

  1. CSS伪类整理笔记

    0 伪元素 虚拟的一个元素,用于向已有的元素添加特殊效果,可用标签元素实现该效果. css3中规定:伪元素的由两个冒号::开头,然后是伪元素的名称.用两个冒号::是为了区别伪类和伪元素(CSS2中并没 ...

  2. Java常用类之String类、Stringbuffer和Random类练习

    定义一个StringBuffer类对象, 1)使用append方法向对象中添加26个字母,并倒序遍历输入 2)删除前五个字符 package 第十一章常用类; /** * 定义一个StringBuff ...

  3. [ActionScript 3.0] 如何获得实例对象的类名及类

    package { import flash.display.DisplayObject; import flash.display.MovieClip; import flash.display.S ...

  4. python cookbook第三版学习笔记十三:类和对象(三)描述器

    __get__以及__set__:假设T是一个类,t是他的实例,d是它的一个描述器属性.读取属性的时候T.d返回的是d.__get__(None,T),t.d返回的是d.__get__(t,T).说法 ...

  5. python cookbook第三版学习笔记十三:类和对象(四)描述器

    __get__以及__set__:假设T是一个类,t是他的实例,d是它的一个描述器属性.读取属性的时候T.d返回的是d.__get__(None,T),t.d返回的是d.__get__(t,T).说法 ...

  6. System类学习笔记

    最近在学习源码的过程中发现:很多深层次的代码都用到了一个类System类,所以决定对System类一探究竟 本文先对System类进行了剖析,然后对System类做了总结 一.首先对该类的中的所有字段 ...

  7. Java api 入门教程 之 JAVA的Random类

    在实际的项目开发过程中,经常需要产生一些随机数值,例如网站登录中的校验数字等,或者需要以一定的几率实现某种效果,例如游戏程序中的物品掉落等. 在Java API中,在java.util包中专门提供了一 ...

  8. JAVA的Random类[转]

    在实际的项目开发过程中,经常需要产生一些随机数值,例如网站登录中的校验数字等,或者需要以一定的几率实现某种效果,例如游戏程序中的物品掉落等. 在Java API中,在java.util包中专门提供了一 ...

  9. Random类(java.util)

    转自 Random类中实现的随机算法是伪随机,也就是有规则的随机.在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字. 相同种子数的Rand ...

随机推荐

  1. Badboy录制脚本参数化

    Jmeter录制脚本多采用Badboy工具 简单参数修改 第一步,先录制场景: a.开始录制,打开浏览器www.sogou.com b.在输入框中输入文字“Badboy" c.回车,关闭录制 ...

  2. Hadoop 调研笔记

    由于从各光伏电站采集的数据量较大,必须解决海量数据的查询.分析的问题.目前主要考虑两种方式:1.  Hadoop大数据技术:2.  Oracle(数据仓库)+BI:    本文仅介绍hadoop的技术 ...

  3. adb opendir failed ,permission denied

    做数据库的时候,我手机是htc的,root过的,找数据库db文件一直找不到, 我使用的adb命令ls的时候会提示:adb opendir failed ,permission denied ,解决方法 ...

  4. eclipse或者myeclipse安装svn报错”unable to load default svn client”

    是svn版本低了的问题 subeclipse下载,直接百度site1.X                  X为你需要的版本 解压site1.X 将此窗口先放到一边 在eclipse的安装目录下的dr ...

  5. oracle 创建database Link

    当两台不同的数据库服务器想要共享一部分数据的时候,可以通过创建database Link的方式实现. 创建全局database links ,则必须使用systm或sys用户,在database前加p ...

  6. 如何在HTML中加载Flash(2种实现方法)_HTML/Xhtml_网页制作

    点评:如何在HTML中加载Flash,为网页添加更多的色彩,普通的网页以无法满足用户的需求,接下来为大家介绍下2种在HTML中加载Flash的方法,感兴趣的各位可以适当参考下,希望对你有所帮助 第一种 ...

  7. (转)maven配置之pom.xml配置

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  8. b/s结构的物业管理系统(一)-------登录篇

    最近计划做一个非框架的物业管理系统前端使用bootstrap js jquery 等希望各位指点一下共同学习 ---前端登录页面------ 这个页面的输入框组用的bootstrap的,我设置了几张背 ...

  9. [python] python实现2048游戏,及代码解析。

    我初学python,有不对之处望大家指教.转载请征得同意. 我在网络上也找了一些2048游戏代码的讲解,但都不是特别详细.所以我希望能够尽量详细的讲解.同时,有的地方我也不懂,希望大家能帮助补充.我会 ...

  10. crontab 系列

    crontab是一个很方便的在unix/linux系统上定时(循环)执行某个任务的程序使用cron服务,用 service crond status 查看 cron服务状态,如果没有启动则 servi ...