随机类

  1. package {
  2.   public final class Random {
  3.     public static function get boolean() : Boolean {
  4.       return Math.random() < .5;
  5.     }
  6.     public static function get wave() : int {
  7.       return Math.random() < .5 ? -1 : 1;
  8.     }
  9.     public static function get color() : uint {
  10.       return Math.random() * 16777216;
  11.     }
  12.     public static function integet(num : int) : int {
  13.       return Math.random() * num;
  14.     }
  15.     public static function number(num : int) : Number {
  16.       return Math.random() * num;
  17.     }
  18.     public static function char(...args) : String {
  19.       return args[int(Math.random() * args.length)];
  20.     }
  21.     public static function string(num : int) : String {
  22.       for (var i : uint = 0,src : String = "";i < num;i++) {
  23.         src += charRanges("0""9""A""Z""a""z");
  24.       }
  25.       return src;
  26.     }
  27.     public static function intRange(n1 : uint, n2 : uint) : uint {
  28.       return Math.random() * (n2 - n1) + n1;
  29.     }
  30.     public static function numRange(n1 : Number, n2 : Number) : Number {
  31.       if (n1 < 0 || n2 < 0) {
  32.         throw new Error("参数错误:不可为负数。");
  33.       }
  34.       return Math.random() * (n2 - n1) + n1;
  35.     }
  36.     public static function charRange(s1 : String, s2 : String) : String {
  37.       var n1 : uint = s1.charCodeAt(0),n2 : uint = s2.charCodeAt(0);
  38.       return String.fromCharCode(int(Math.random() * (n2 - n1)) + n1);
  39.     }
  40.     public static function intRanges(...args) : int {
  41.       var n1s : Array = new Array();
  42.       var n2s : Array = new Array();
  43.       while (args.length) {
  44.         n1s.push(args.shift());
  45.         n2s.push(args.shift());
  46.       }
  47.       var len : uint = n1s.length;
  48.       var s1 : uint = 0, s2 : uint = 0;
  49.       for (var i : uint = 0;i < len; i++) {
  50.         s1 += n1s[i];
  51.         s2 += n2s[i];
  52.       }
  53.       var r : int = Math.random() * (s2 - s1) + n1s[0];
  54.       i = 0;
  55.       while (r >= n2s[i++]) {
  56.         r += n1s[i] - n2s[i - 1];
  57.       }
  58.       return r;
  59.     }
  60.     public static function numRanges(...args) : Number {
  61.       var n1s : Array = new Array();
  62.       var n2s : Array = new Array();
  63.       while (args.length) {
  64.         n1s.push(args.shift());
  65.         n2s.push(args.shift());
  66.       }
  67.       var len : uint = n1s.length;
  68.       var s1 : uint = 0, s2 : uint = 0;
  69.       for (var i : uint = 0;i < len; i++) {
  70.         s1 += n1s[i];
  71.         s2 += n2s[i];
  72.       } 
  73.       do {
  74.         var r : Number = Math.random() * (s2 - s1) + n1s[0];
  75.         i = 0;
  76.         while (r >= n2s[i++]) {
  77.           r += n1s[i] - n2s[i - 1];
  78.         }
  79.       } while (isNaN(r));
  80.       return r;
  81.     }
  82.     public static function charRanges(...args) : String {
  83.       var n1s : Array = new Array();
  84.       var n2s : Array = new Array();
  85.       while (args.length) {
  86.         n1s.push(args.shift().charCodeAt(0));
  87.         n2s.push(args.shift().charCodeAt(0) + 1);
  88.       }
  89.       var len : uint = n1s.length;
  90.       var s1 : uint = 0, s2 : uint = 0;
  91.       for (var i : uint = 0;i < len; i++) {
  92.         s1 += n1s[i];
  93.         s2 += n2s[i];
  94.       }
  95.       var r : int = Math.random() * (s2 - s1) + n1s[0];
  96.       i = 0;
  97.       while (r >= n2s[i++]) {
  98.         r += n1s[i] - n2s[i - 1];
  99.       }
  100.       return String.fromCharCode(r);
  101.     }
  102.     public static function strRanges(num : uint,...args) : String {
  103.       var n1s : Array = new Array();
  104.       var n2s : Array = new Array();
  105.       while (args.length) {
  106.         n1s.push(args.shift().charCodeAt(0));
  107.         n2s.push(args.shift().charCodeAt(0) + 1);
  108.       }
  109.       var len : uint = n1s.length;
  110.       var s1 : uint = 0, s2 : uint = 0;
  111.       for (var i : uint = 0;i < len; i++) {
  112.         s1 += n1s[i];
  113.         s2 += n2s[i];
  114.       }
  115.       var src : String = "";
  116.       while (num-- > 0) {
  117.         var r : int = Math.random() * (s2 - s1) + n1s[0];
  118.         i = 0;
  119.         while (r >= n2s[i++]) {
  120.           r += n1s[i] - n2s[i - 1];
  121.         }
  122.         src += String.fromCharCode(r);
  123.       }
  124.       return src;
  125.     }
  126.     public static function colorRanges(...args) : uint {
  127.       return intRange(args[0], args[1] + 1) << 16 + intRange(args[2], args[3] + 1) << 8 + intRange(args[4], args[5] + 1);
  128.     }
  129.     public static function disorder(arr : Array) : Array {
  130.       var len : uint = arr.length;
  131.       var cache : *,ti : uint;
  132.       for (var i : uint = 0;i < len;i++) {
  133.         ti = int(Math.random() * len);
  134.         cache = arr[i];
  135.         arr[i] = arr[ti];
  136.         arr[ti] = cache;
  137.       } 
  138.       while (--i >= 0) {  
  139.         ti = int(Math.random() * len);
  140.         cache = arr[i];
  141.         arr[i] = arr[ti];
  142.         arr[ti] = cache;
  143.       }
  144.       return arr;
  145.     }
  146.     public static function takeOut(num : uint,arr : Array) : Array {
  147.       var newArr : Array = new Array(num);
  148.       for (var i : uint = 0;i < num; i++) {
  149.         newArr.push(arr.splice(int(Math.random() * arr.length)), 1);
  150.       }
  151.       return newArr;
  152.     }
  153.     public static function find(num : uint, arr : Array) : Array {
  154.       var newArr : Array = arr.concat();
  155.       var cache : *,ti : uint, len : uint = arr.length;
  156.       for (var i : uint = 0;i < num; i++) {
  157.         ti = int(Math.random() * len);
  158.         cache = newArr[i];
  159.         newArr[i] = newArr[ti];
  160.         newArr[ti] = cache;
  161.       }
  162.       return newArr.splice(0, num);
  163.     }
  164.   }
  165. }
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值