Rnd


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

標準ライブラリ - Rnd

説明

Kuinでは、実はLib@RndやLib@RndFで乱数を生成することが出来るのですが、このライブラリを使用すれば、乱数のインスタンスを用意したり、乱数のseedの値を指定した乱数の生成などが行えます。
これはゲームのリプレイデータを生成する時など、常に固定の乱数列が得たい場合などに有効です。
因みにKuinで生成することが出来る乱数は、全てMT系乱数となっています。線形合同法とは格が違うのだ(ドヤァ)




所有メソッド

Make() : Rnd@CRnd

説明

その昔MakeSeedと呼ばれていたものです。Seed値を指定して、乱数を生成するクラスを作ります。
1.00の中でも、古い1.00はMakeSeedな仕様になっていないので、注意してください。

引数

  • seed : int
    • 初期化したいseed値を指定します

戻り値

  • Rnd@CRnd
    • Rnd@CRnd型のクラスインスタンスが返ります。
    • このインスタンスを利用して、様々な乱数を得ます。
    • このメソッドで得た乱数のseedの値は実行ごとにオートで変わります。

サンプルコード(Ver1.00)

  1. func Main()
  2. var rndIns0 : Rnd@CRnd :: Rnd@Make(0) {Seed値を0として乱数クラスを生成}
  3. var rndIns1 : Rnd@CRnd :: Rnd@Make(917) {検証用にSeed値を917とした乱数クラスも生成}
  4.  
  5. for i(1,10,1)
  6. do Dbg@Log("実行 : " ~ i.ToStr() ~ "回目")
  7. do Dbg@Log("初期SEED値 : 0,乱数値 : " ~ rndIns0.GetF().ToStr())
  8. do Dbg@Log("初期SEED値 : 917,乱数値 : " ~ rndIns1.GetF().ToStr())
  9. end for
  10.  
  11. do Dbg@Log("全く同じSEEDでもう一度初期化します")
  12.  
  13. do rndIns0 :: Rnd@Make(0) {Seed値を0として乱数クラスを生成}
  14. do rndIns1 :: Rnd@Make(917) {検証用にSeed値を917とした乱数クラスも生成}
  15.  
  16. for i(1,10,1)
  17. do Dbg@Log("実行 : " ~ i.ToStr() ~ "回目")
  18. do Dbg@Log("SEED値 : 0,乱数値 : " ~ rndIns0.GetF().ToStr())
  19. do Dbg@Log("SEED値 : 917,乱数値 : " ~ rndIns1.GetF().ToStr())
  20. end for
  21.  
  22. do Dbg@Log("初期化したSEED値が違えば得られる乱数が異なるが、")
  23. do Dbg@Log("初期化したSEED値が同じならば、同じ順番に同一の乱数列が得られることが分かる。")
  24. end func

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)

  1. func Main()
  2. do Dbg@Log("1~30までの範囲の乱数を100個出力します。")
  3. for i(1,100,1)
  4. do Dbg@Log(Rnd@Get(1,30).ToStr()) {結果は実行する度に変化します}
  5. end for
  6. end func

GetF(min:int,max:int) : int

説明

簡易版のCRnd@GetF()です。初期SEEDを指定せずに、0≦num<1の範囲のfloatをランダムで1つ取り出します。
初期SEEDは、実行する度に変わりますので再現性はありません。メリットでありデメリットでもありますので、適宜使い分けてください。

引数

  • なし
    • ないよっ

戻り値

  • float
    • 0≦num<1の範囲の中から、浮動小数がランダムで1つ得られます

サンプルコード(Ver1.00)

  1. func Main()
  2. do Dbg@Log("0~1までの範囲の乱数を100個出力します。")
  3. for i(1,100,1)
  4. do Dbg@Log(Rnd@GetF().ToStr()) {結果は実行する度に変化します}
  5. end for
  6. end func