Advertisement
Guest User

Random with excludes

a guest
Nov 6th, 2011
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package  {
  2.     import flash.display.Sprite;
  3.     import flash.net.FileReference;
  4.     /**
  5.      * ...
  6.      * @author DoctorSTaL
  7.      */
  8.     public class TestClass extends Sprite{
  9.        
  10.         public function TestClass() {
  11.             super();
  12.            
  13.             var max:int = 10;
  14.            
  15.             var resArr:Vector.<int> = new Vector.<int>(max);
  16.             var r:int;
  17.            
  18.             var i:int = 10000;
  19.             while(i--){
  20.                 r=excludedRand(-1,1,5,7,3);
  21.                 resArr[r]++;
  22.             }
  23.             i = max;
  24.             while (i--) {
  25.                 trace(i+" : "+resArr[i]);
  26.             }
  27.         }
  28.        
  29.         private function excludedRand(max:uint, ...excludes):uint {
  30.             if (max <= excludes.length) throw(new ArgumentError("To many excludes."));
  31.             if (excludes.sort(Array.NUMERIC|Array.UNIQUESORT) == 0) throw(new ArgumentError("You must use unique exclusions due to use excludedRand."));
  32.             if (excludes[excludes.length - 1] >= max) throw(new ArgumentError("All exclusions shoud be less than max value."));
  33.            
  34.             var len:uint = max - excludes.length;
  35.             var res:uint = uint(Math.random() * len);
  36.             for (var i:int = 0; i < excludes.length; i++) {
  37.                 if (res >= excludes[i]) res++; else break;
  38.             }
  39.             return res;
  40.         }
  41.     }
  42.  
  43. }
  44.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement