何か (「ターゲット」) がランダムな順序で (合計 10 回のうち) 5 回表示されるようにします。
以下のコードの問題は、ランダムな順序で表示できることですが、必ずしも 5 回表示されるとは限りません。
function rand_float(min:Number,max:Number=NaN):Number {
if (isNaN(max)) { max = min; min=0; }
return Math.random()*(max-min)+min;
}
function rand_integer(min:Number,max:Number=NaN):int {
if (isNaN(max)) { max = min; min=0; }
return Math.floor(rand_float(min,max));
}
function rand_boolean(chance:Number=0.5):Boolean {
return (Math.random() < chance);
}
var a_list:Array = ['a','b','d','e'];
var target:String = 'b';
for (var i:int = 0; i < 10; i++) {
if (rand_boolean()) {
trace('random other thing: ' + a_list[rand_integer(0,3)]);
} else {
trace('target! :' + target);
}
}
rand_boolean メソッドは 50-50 であるため、「表示される」か「表示されない」かのいずれかですが、常に 10 回中 5 回になるという保証はありません。
カウンターを入れて、5回後に制限するか(超えた場合)、強制的にさらに表示させることができると思います(たとえば、8回後に1回しか表示されなかった場合)が、おそらくもっと良い方法がありますこれを行うには?