ActionScript 3.0 自写类整理笔记(十三)——Random类
一个简单的随机函数工具类,总共提供了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类的更多相关文章
- CSS伪类整理笔记
0 伪元素 虚拟的一个元素,用于向已有的元素添加特殊效果,可用标签元素实现该效果. css3中规定:伪元素的由两个冒号::开头,然后是伪元素的名称.用两个冒号::是为了区别伪类和伪元素(CSS2中并没 ...
- Java常用类之String类、Stringbuffer和Random类练习
定义一个StringBuffer类对象, 1)使用append方法向对象中添加26个字母,并倒序遍历输入 2)删除前五个字符 package 第十一章常用类; /** * 定义一个StringBuff ...
- [ActionScript 3.0] 如何获得实例对象的类名及类
package { import flash.display.DisplayObject; import flash.display.MovieClip; import flash.display.S ...
- python cookbook第三版学习笔记十三:类和对象(三)描述器
__get__以及__set__:假设T是一个类,t是他的实例,d是它的一个描述器属性.读取属性的时候T.d返回的是d.__get__(None,T),t.d返回的是d.__get__(t,T).说法 ...
- python cookbook第三版学习笔记十三:类和对象(四)描述器
__get__以及__set__:假设T是一个类,t是他的实例,d是它的一个描述器属性.读取属性的时候T.d返回的是d.__get__(None,T),t.d返回的是d.__get__(t,T).说法 ...
- System类学习笔记
最近在学习源码的过程中发现:很多深层次的代码都用到了一个类System类,所以决定对System类一探究竟 本文先对System类进行了剖析,然后对System类做了总结 一.首先对该类的中的所有字段 ...
- Java api 入门教程 之 JAVA的Random类
在实际的项目开发过程中,经常需要产生一些随机数值,例如网站登录中的校验数字等,或者需要以一定的几率实现某种效果,例如游戏程序中的物品掉落等. 在Java API中,在java.util包中专门提供了一 ...
- JAVA的Random类[转]
在实际的项目开发过程中,经常需要产生一些随机数值,例如网站登录中的校验数字等,或者需要以一定的几率实现某种效果,例如游戏程序中的物品掉落等. 在Java API中,在java.util包中专门提供了一 ...
- Random类(java.util)
转自 Random类中实现的随机算法是伪随机,也就是有规则的随机.在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字. 相同种子数的Rand ...
随机推荐
- Badboy录制脚本参数化
Jmeter录制脚本多采用Badboy工具 简单参数修改 第一步,先录制场景: a.开始录制,打开浏览器www.sogou.com b.在输入框中输入文字“Badboy" c.回车,关闭录制 ...
- Hadoop 调研笔记
由于从各光伏电站采集的数据量较大,必须解决海量数据的查询.分析的问题.目前主要考虑两种方式:1. Hadoop大数据技术:2. Oracle(数据仓库)+BI: 本文仅介绍hadoop的技术 ...
- adb opendir failed ,permission denied
做数据库的时候,我手机是htc的,root过的,找数据库db文件一直找不到, 我使用的adb命令ls的时候会提示:adb opendir failed ,permission denied ,解决方法 ...
- eclipse或者myeclipse安装svn报错”unable to load default svn client”
是svn版本低了的问题 subeclipse下载,直接百度site1.X X为你需要的版本 解压site1.X 将此窗口先放到一边 在eclipse的安装目录下的dr ...
- oracle 创建database Link
当两台不同的数据库服务器想要共享一部分数据的时候,可以通过创建database Link的方式实现. 创建全局database links ,则必须使用systm或sys用户,在database前加p ...
- 如何在HTML中加载Flash(2种实现方法)_HTML/Xhtml_网页制作
点评:如何在HTML中加载Flash,为网页添加更多的色彩,普通的网页以无法满足用户的需求,接下来为大家介绍下2种在HTML中加载Flash的方法,感兴趣的各位可以适当参考下,希望对你有所帮助 第一种 ...
- (转)maven配置之pom.xml配置
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- b/s结构的物业管理系统(一)-------登录篇
最近计划做一个非框架的物业管理系统前端使用bootstrap js jquery 等希望各位指点一下共同学习 ---前端登录页面------ 这个页面的输入框组用的bootstrap的,我设置了几张背 ...
- [python] python实现2048游戏,及代码解析。
我初学python,有不对之处望大家指教.转载请征得同意. 我在网络上也找了一些2048游戏代码的讲解,但都不是特别详细.所以我希望能够尽量详细的讲解.同时,有的地方我也不懂,希望大家能帮助补充.我会 ...
- crontab 系列
crontab是一个很方便的在unix/linux系统上定时(循环)执行某个任务的程序使用cron服务,用 service crond status 查看 cron服务状态,如果没有启动则 servi ...