乱数

乱数

  1. 乱数とは?
  2. iscript他による乱数
  3. ティラノビルダーによる乱数
  4. ランダムで会話させる考え方
  5. もしも乱数が数値Xであるならジャンプさせる
メニューにもどる

乱数とは?

ある一定の数値内の中でランダムに数値を取得します。
いわゆる簡単なサイコロです。

iscript他による乱数


以下 ティラノスクリプトwiki側からの引用

ランダム数値の取り出し 小数点込み

[iscript]
tf.rand = Math.floor( Math.random() * 6) + 1
alert(tf.rand);
[endscript]

Math.random()で生成される乱数は0以上1未満なため、*6にすることで0以上6未満の数字が作られます。作られた数字は小数点以下まで桁があるので、Math.floor()を利用して整数値にします。
最後に、0~5の整数になった値に1を足して1~6の値にします。

誤解を恐れずに簡単にいうと、はじめに0.9(0.9999…)が作られてそれに6を掛け算。答えは5.4…です。
6ではありません。なので1をプラスしてあげます。そうすると6.4でおよそ6が出来上がります。

乱数 小数点切り捨て

きちんと整数にするにはMath.floor()を使用します。
この様な形です。
[iscript]
tf.rand= Math.floor(Math.random() * 6);
alert(tf.rand);
[endscript]

ゲーム的に考える乱数

変数は先に変数管理で登録しておいてね。
[iscript]
f.life = 200;
alert("体力は"+f.life);

alert("ランダムで10 ~ 50 のダメージ");
tf.damage= Math.floor(Math.random() * 41) + 10;
alert(tf.damage+"をくらった");

f.life-=tf.damage;

alert(f.life);

[endscript]

実行例(数値はもちろんランダム)
tiryoku.JPG
tyryoku2.JPG
tyryoku3.JPG
tyryoku4.JPG

乱数をティラノスクリプトで入力表示。

;f.numは事前に変数管理で登録しておいてね。
[eval exp="f.num=1"]
答えは[emb exp="Math.random(f.num)*6"]
[l][r]
小数点切り捨ての答えは[emb exp="Math.floor(f.num)"]
[l][r]

ティラノビルダーによる乱数

実際に入力してみます。今のところ下限が1以外の場合(2や3・・)は、上限にプラス1して利用してください、
想定外の数値 「それ以外の場合」 はラベルジャンプ→乱数発生のところに戻るを追加してください。

1-4の間の乱数を発生させます。

hensu_ransu.JPG
ransu_14.JPG

132.JPG
421.JPG
1-4の数字が正常にでてますね

3~6の間の乱数を発生。

3から6の場合、3-4を設定します。(単純に3と4を足し算し1マイナスするイメージ)
randamu.JPG

実行
randamu35.JPG
randamu335.JPG
3から6の乱数の上下限が確認できた。


上の項目をみるとわかるのですが、(例でいうとゲームのところです。)
alert("ランダムで10 ~ 50 のダメージ");
tf.damage= Math.floor(Math.random() * 41) + 10;
alert(tf.damage+"をくらった");

※10 ~ 50 のダメージで41と書いてありますね。


メモ
乱数をテストする際はラベルジャンプと改ページを駆使して繰り返し作動させます(大きな数値は絶対ダメ。pcが壊れるかも。デバック大変。 プレビューを終わるときはウインドウを閉じる。)

テスト例
tesuto.JPG

3~7の乱数を発生させる

3から7の場合、3-5を設定します。

ひとつ多い8=3+5のイメージで3-5を設定します。
実際に表示されるのはマイナス1される3~7です。

3-5.JPG

実行
jikkou.JPG
774.JPG
上限下限ともに想定の範囲が実行された

想定外の数値の場合の処理を追加する

3~8の乱数を発生させたとして(無いと思いますが)想定外の数値について処理を追加します。

まず想定外の数値とは?

例ですと 3以下 8以上 ですね。

乱数が発生し格納する変数名はf.ransuとします。



ransuが3以下のときは再抽選のために指定のラベルに飛ぶ
31ransu.JPG
[jump storage="scene.ks" target="*乱数発生" cond="f.ransu<3" ]


ransuが8以上のときは再抽選のために指定のラベルに飛ぶ
8.JPG
[jump storage="scene.ks" target="*乱数発生" cond="f.ransu>8" ]


※ティラノビルダー内の説明です。[if]を使えばもっと複雑な分岐ができます

ランダムで会話させる

全て上の項目の応用です。ただし、どのように条件をつけるのか?は製作者次第です。
例えば、条件をかなり細かくするなら
【1】もしも乱数で出した数値が1ならラベル1にジャンプ 乱数の数値が2ならラベル2にジャンプする
【2】もしも乱数で出した数値が1なら変数管理でflag1=falseをtrueにする。乱数の数値が2なら変数管理でflag1=falseをtrueにする。…と事細かく設計する。

条件を緩くするなら
【3】もしも乱数で出した数値5以下ならラベル1にジャンプ、それ以外ならラベル2にジャンプ
【4】もしも乱数で出した数値5以下なら変数管理でflag1=falseをtrueにする。それ以外は変更しない
と言った感じです。


これは全部、変数管理やジャンプでの応用となります。
【3】なんて、好感度の応用とほぼ同じです。決め手となるフラグが乱数になってるだけにすぎません。

ジャンプについてはjumpでイベント・分岐(1.41ver~)を確認

【1】もしも乱数で出した数値が6ならラベル名(該当した数値)にジャンプする

変数は変数管理で設定しておいてください。
必要な変数は乱数を代入する変数を一個だけです。ransuとしてあります。

シナリオ内の変数設定はこちらです。
ransu110.JPG




ransu_txt0.JPG

コンポーネント 概要説明
メッセージ表示 すでに表示されている場合は必要ない
ラベル 乱数発生 ここに戻ってくるラベル。戻りたくない場合はこのラベルを必要な場所にラベルをおく&※Bを変化させるだけの話
ティラノスクリプト 乱数を代入された変数ransuの数値を表示している
ジャンプ(条件指定)※A 条件が合わない時は無視される。条件が合うときはラベル名(該当した数値)にジャンプする条件については※1の画像参照
ジャンプ(条件なし)※B 条件なしでジャンプされる停止には100%行かないと思われる。飛ばす先はベル 乱数発生である。これでループさせている。
停止 バグ防止・・・というかわかりやすいので用意した
ラベル名(該当した数値) そのまんまの名前のラベル。※Aの条件があってるときに飛ばされる
テキスト 会話内容が表示される(別にティラノスクリプトでもいい。)
停止 デバック用・・・というかわかりやすいので用意した

※1
jump_ransu.JPG

実行結果
ransu_txt.JPG

ジャンプの分岐を付け足すなどして応用するとこの様な形にできます
ransu_jyouken3.JPG
ジャンプについてはjumpでイベント・分岐(1.41ver~)を参照。条件のバリエーションを見ることができます。
ouyou_ransu.JPG

【2】もしも乱数で出した数値が1なら変数管理でflag1=falseをtrueにする。乱数の数値が2なら変数管理でflag1=falseをtrueにする。 の場合ならテキストの部分を「変数設定」に変更すればいいだけです。

※ティラノビルダー内の説明です。[if]を使えばもっと複雑な分岐ができます

  • 最終更新:2016-02-28 03:20:05

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

認証パスワード