obj.rand

lua.txtの記述

obj.rand(st_num,ed_num[,seed,frame])
乱数を発生させます。通常の乱数と異なり同一時間のフレームで常に同じ値が出るように乱数を発生させます。
※obj.を省略してrand()のみでも使用出来ます。
st_num 乱数の最小値
ed_num 乱数の最大値
seed 乱数の種(省略時はオブジェクト毎に異なる乱数になります
プラスの値を指定すると種が同じでもオブジェクト毎に異なる乱数になり
マイナスの値では種が同じならば全てのオブジェクトで同じ乱数になります)
frame フレーム番号(省略時は現在のフレームになります)
例:obj.rand(10,20)



解説

任意の値の範囲で、整数の乱数を発生させます。
フレーム番号を指定しない場合、1フレーム毎に数値が変化します。

乱数の範囲(st_num,ed_num)

obj.rand(-100,100)
-100~+100の範囲からランダムに数値を発生させます。


乱数の種(seed)

乱数の種類を決定します。
乱数の種類が同じ場合、同じ値の乱数となります。

【乱数の種がプラスの場合】
ただし「乱数の種」がプラスの場合は、同じオブジェクト内では同じ乱数が発生しますが、異なるオブジェクトでは、異なる乱数が発生します。
オブジェクトA:obj.rand(-100,100,1) →36
オブジェクトA:obj.rand(-100,100,1) →36
オブジェクトB:obj.rand(-100,100,1) →75


【乱数の種がマイナスの場合】
また、「乱数の種」がマイナスの場合は、異なるオブジェクトであっても同じ乱数が発生し、全てのオブジェクトで乱数が一致します。
オブジェクトA:obj.rand(-100,100,-1) →36
オブジェクトA:obj.rand(-100,100,-1) →36
オブジェクトB:obj.rand(-100,100,-1) →36



フレーム番号(frame)

乱数のフレーム番号です。
乱数は例えば次のように、オブジェクトの現在フレームに応じて変化します。
フレーム0→25
フレーム1→35
フレーム2→72

これは、フレーム番号を省略していた場合、フレーム番号=オブジェクトの現在のフレームになるためです。
obj.rand(-100,100,0,obj.frame)と同じ意味になります。

【一定の間隔で変化させる場合】
ここで、フレーム番号に特定のフレーム数を入力すると、乱数が固定され、変化しないようになります。
この性質を利用して、任意の時間間隔でランダムに数値が変化するようにできます。
1秒ごとにランダムに変化:obj.rand(-100,100,0,math.floor(obj.time))
0.3秒ごとにランダムに変化:obj.rand(-100,100,0,math.floor(obj.time/0.3))

※math.floor()は、数値の切り下げ


  • 最終更新:2011-12-11 12:40:58

このWIKIを編集するにはパスワード入力が必要です

認証パスワード