arz Nitelyってシステム屋どうよ?

SecondLifeとWebとの融合を模索するセミプロWeb屋の挑戦

乱数取得

2008年05月13日 – 00:21

MINからMAXまでの間の乱数を返すユーザ関数

integer uuRandom(integer MIN, integer MAX, integer flug_fresh);

flug_fresh:直前と同じ結果が出た場合に再度ランダマイズするかどうかのフラグ

  TRUE:再度乱数取得を行う / FALSE:行わない

// Return Random Number :: from min to max :: 2009-03-10
integer uuRandom_last_num;
integer uuRandom_new_num;

integer uuRandom(integer MIN, integer MAX, integer flug_fresh){
    if (flug_fresh && MIN != MAX){
        do{
            uuRandom_new_num = MIN + (integer)llFrand(MAX - MIN + 1);
        }while (uuRandom_new_num == uuRandom_last_num);
    }else{
        uuRandom_new_num = MIN + (integer)llFrand(MAX - MIN + 1);
    }
    uuRandom_last_num = uuRandom_new_num;
    return uuRandom_new_num;
}

[追記 2009-03-10]do-whileで書き直しました。