2009年4月4日土曜日

乱数

ご存知のとおり、ActionScriptでは、Math.randomで乱数を発生させることができる。これは、0以上1未満の数値が同じ確率で発生する擬似乱数である。以下のようなクラスを用意しておくと、意外と重宝する。

package {
  public class Random {
    /**
      * @param inc included number
      * @param exc excluded number
      * @return random number between inc and exc
      */

    public static function between(inc:Number, exc:Number):Number {
       return Math.random() * (exc - inc) + inc;
    }

    /**
      * @return -1 or 1.
      */

    public static function sign():Number {
       return (Math.random() < .5)? -1 : 1;
    }
  }
}



使い方は、こんな感じになる。

  • aは10以上20未満の実数値。


    var a:Number = Random.between(10,20);


  • aは1または-1。


    var a:Number = Random.sign();


  • aは10以上20未満または、-20より大きく-10以下の実数値。


    var a:Number = Random.sign() * Random.between(10,20);



いずれの場合も、範囲内の数値が同確率で発生するところがポイント。次回は、正規乱数について。

0 件のコメント: