一个简单的随机函数工具类,总共提供了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. jQuery控件有所感悟

    两种写法对比: 第一种: ;(function($){ $.fn.myplugin = function(op,params){ if (typeof op == 'string'){ return ...

  2. python3.5------购物车

    笔者:QQ:   360212316 逻辑图 程序代码 # /usr/bin/env python # -*- coding: utf-8 -*- product_list = [ ["ip ...

  3. 并发下常见的加锁及锁的PHP具体实现-转载

    并发下常见的加锁及锁的PHP具体实现 http://www.cnblogs.com/scotoma/archive/2010/09/26/1836312.html 在最近的项目中有这样的场景 1.生成 ...

  4. python+selenium简易自动化框架,包含生成测试报告以及发送结果至Email

    Selenium+python环境搭建见虫师的pdf文档,非常详尽 简易框架: 1.文件目录:

  5. 使用 Entity Framework Core 时,通过代码自动 Migration

    一 介绍 在使用 Entity Framework Core (下面就叫 EF Core 吧)进行开发时,如果模型有变动,我们要在用 EF Core 提供的命令行工具进行手工迁移,然后再运行程序.但是 ...

  6. IIS7.5 webapi 不支持 Delete、Put 解决方法

    在IIS管理界面选择API的项目,选择 “Features View”. 2.  选择 “Handler Mappings” 菜单. 3. 打开“WebDAV” 选项. 4. 点击 “Request ...

  7. VC++ 在使用 CImage 的Draw 输入一个图像时,有时候会造成图像失真严重,解决的方法如下

    VC++  在使用 CImage 的Draw 输入一个图像时,有时候会造成图像失真严重,解决的方法如下 失真主要是由于变形造成的.只要设置一下变形的模式就可以了 ::SetStretchBltMode ...

  8. LDAP与Samba

    默认的Samba服务器支持本地系统用户(smbpasswd添加后)访问Samba资源,不支持OpenLDAP服务器账号访问Samba共享资源 目的:配置完后,OpenLDAP每新增一个用户,就自动支持 ...

  9. 尝试一下代码高亮。。成功的话明天写一篇blog

    using System; using System.Collections; using UnityEngine; public class Time : MonoBehaviour { // Us ...

  10. Linux入门学习,开启端口号

    之前买了一个阿里云Centos 7服务器,默认开启22端口和80端口,想开启其他端口号如何做 1.开启端口号 [root@localhost ~]# /sbin/iptables -I INPUT - ...