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