標準ライブラリ - Rnd
説明
Kuinでは、実はLib@RndやLib@RndFで乱数を生成することが出来るのですが、このライブラリを使用すれば、乱数のインスタンスを用意したり、乱数のseedの値を指定した乱数の生成などが行えます。
これはゲームのリプレイデータを生成する時など、常に固定の乱数列が得たい場合などに有効です。
因みにKuinで生成することが出来る乱数は、全てMT系乱数となっています。線形合同法とは格が違うのだ(ドヤァ)
所有メソッド
Make() : Rnd@CRnd
説明
その昔MakeSeedと呼ばれていたものです。Seed値を指定して、乱数を生成するクラスを作ります。
1.00の中でも、古い1.00はMakeSeedな仕様になっていないので、注意してください。
引数
戻り値
- Rnd@CRnd
- Rnd@CRnd型のクラスインスタンスが返ります。
- このインスタンスを利用して、様々な乱数を得ます。
- このメソッドで得た乱数のseedの値は実行ごとにオートで変わります。
サンプルコード(Ver1.00)
func Main()
var rndIns0 : Rnd@CRnd :: Rnd@Make(0) {Seed値を0として乱数クラスを生成}
var rndIns1 : Rnd@CRnd :: Rnd@Make(917) {検証用にSeed値を917とした乱数クラスも生成}
for i(1,10,1)
do Dbg
@Log("実行 : " ~ i
.ToStr
() ~
"回目") do Dbg
@Log("初期SEED値 : 0,乱数値 : " ~ rndIns0
.GetF
().ToStr
()) do Dbg
@Log("初期SEED値 : 917,乱数値 : " ~ rndIns1
.GetF
().ToStr
())
do Dbg
@Log("全く同じSEEDでもう一度初期化します")
do rndIns0 :: Rnd@Make(0) {Seed値を0として乱数クラスを生成}
do rndIns1 :: Rnd@Make(917) {検証用にSeed値を917とした乱数クラスも生成}
for i(1,10,1)
do Dbg
@Log("実行 : " ~ i
.ToStr
() ~
"回目") do Dbg
@Log("SEED値 : 0,乱数値 : " ~ rndIns0
.GetF
().ToStr
()) do Dbg
@Log("SEED値 : 917,乱数値 : " ~ rndIns1
.GetF
().ToStr
())
do Dbg
@Log("初期化したSEED値が違えば得られる乱数が異なるが、") do Dbg
@Log("初期化したSEED値が同じならば、同じ順番に同一の乱数列が得られることが分かる。")
Get(min:int,max:int) : int
説明
簡易版のCRnd@Get()です。初期SEEDを指定せずに、minとmaxの範囲の中から、整数値をランダムで1つ取り出します。
初期SEEDは、実行する度に変わりますので再現性はありません。メリットでありデメリットでもありますので、適宜使い分けてください。
引数
- min : int
- max : int
- 整数の範囲の最大値
- 因みにmin>maxの値を入れるとassertが吐かれる
戻り値
- int
- min≦num≦maxの範囲の中から、整数がランダムで1つ得られます
サンプルコード(Ver1.00)
func Main()
do Dbg
@Log("1~30までの範囲の乱数を100個出力します。") for i(1,100,1)
do Dbg
@Log(Rnd
@Get
(1,30).ToStr
()) {結果は実行する度に変化します
}
GetF(min:int,max:int) : int
説明
簡易版のCRnd@GetF()です。初期SEEDを指定せずに、0≦num<1の範囲のfloatをランダムで1つ取り出します。
初期SEEDは、実行する度に変わりますので再現性はありません。メリットでありデメリットでもありますので、適宜使い分けてください。
引数
戻り値
- float
- 0≦num<1の範囲の中から、浮動小数がランダムで1つ得られます
サンプルコード(Ver1.00)
func Main()
do Dbg
@Log("0~1までの範囲の乱数を100個出力します。") for i(1,100,1)
do Dbg
@Log(Rnd
@GetF
().ToStr
()) {結果は実行する度に変化します
}
最終更新:2013年09月23日 14:36