2007年1月20日星期六

4.7.生成随机数


4.7. 生成随机数

问题
我要生成随机数
解决办法
使用Math.random( ) 方法生成 0 到 .999999的随机数。还有,是用NumberUtilities.random( ) 方法可以生成指定范围的随机数
讨论

Math.random( ) 方法产生 0 到 0.999999999的浮点随机数。大多数情况我们希望产生整数而不是浮点数,还好随机值可以指定精度。
NumberUtilities.random( ) 方法产生指定的范围和精度,它接受三个参数:
minimum
可接受的最小值
maximum
可接受的最大值
roundToInterval
间隔值,可选
NumberUtilities 类在 ascb.util 包中,使用前导入。
例子如下:
// 产生 0 到 100的整数.
trace(NumberUtilities.random(0, 100));

// 产生 0 到 100的整数,间隔为5
trace(NumberUtilities.random(0, 100, 5));

trace(NumberUtilities.random(-10, 10, .1));

trace(NumberUtilities.random(-1, 1, .05));
package {

import flash.display.Sprite;
import ascb.util.NumberUtilities;
import flash.utils.Timer;
import flash.events.TimerEvent;

public class RandomNumberTest extends Sprite {

private var _total:uint;
private var _numbers:Object

public function RandomNumberTest( ) {
var timer:Timer = new Timer(10);
timer.addEventListener(TimerEvent.TIMER, randomizer);
timer.start( );
_total = 0;
_numbers = new Object( );
}

private function randomizer(event:TimerEvent):void {
var randomNumber:Number = NumberUtilities.random(1, 10, 1);
_total++;
if(_numbers[randomNumber] == undefined) {
_numbers[randomNumber] = 0;
}
_numbers[randomNumber]++;
trace("random number: " + randomNumber);
var item:String;
for(item in _numbers) {
trace("\t" + item + ": " + Math.round(100 * _numbers[item]/_total));
}
}

}
}


没有评论: