WOLF RPGエディター(ウディタ)[3.336]/変数【サイトトップへ戻る】
■乱数で一度出力した値を二重に出力させない
(更新:2024/05/06)


乱数で一度出力した値が二重に出力されないように設定します。


ショートカット
■当ページの処理について
■乱数の値をコモンセルフに保存
■乱数の値を可変DBに保存

乱数に関する基本説明は、別ページにて紹介しています。
【乱数の基本情報を見る】


  
■当ページの処理について

当ページの処理は、例えば乱数[1〜5]を出力する場合は、
「1」「2」「3」「4」「5」の値が1回ずつしか出力されないように設定します。

全ての値を出力し終わったあとに乱数の出力を実行した場合は、
「-999999」の値を出力、または全ての値を復活させて一から乱数の処理を行います。



セルフ変数は以下のように使用します。

【変数の一覧を別ウィンドウで表示】

セルフ変数
番号 名前 使用内容
0 処理方法 処理方法を設定します。
0:出力(枯渇時エラー) 乱数の値を出力します。
未出力の値を全て使い切った場合は、
乱数の出力結果が「-999999」になります。
(デバッグ文でエラーを表示)
1:出力(枯渇時復活) 乱数の値を出力します。
未出力の値を全て使い切った場合は、
全ての値が出力できるように初期化した上で、
最初の乱数の値が出力されます。
(デバッグ文で復活させた事を表示)
2:出力(全て復活) 全ての値が出力できるように初期化した上で、
最初の乱数の値が出力されます。
10:出力済み値を復活 指定した値を復活させて、再び乱数で出力できるようにします。
復活させる値はセルフ変数[3:復活させる値]に設定します。
1
2
乱数範囲下限
乱数範囲上限
乱数の範囲を設定します。
「乱数範囲下限」「乱数範囲上限」と名前が付いていますが、
実際には「5〜1」と下限の方に大きな値を設定しても、問題なく処理されます。
設定できる乱数の数を超えている場合は、乱数の出力結果が「-999999」になります。
(デバッグ文でエラーを表示)
セルフ変数[0:処理方法]が「10:出力済み値を復活」の時は、ここの設定は無視されます。
3 復活させる値 セルフ変数[0:処理方法]が「10:出力済み値を復活」の時に、ここの設定を使います。
ここで設定された値が復活し、再び乱数で出力できるようになります。
例えば乱数[1〜5]で「4」を出力したあとに「復活させる値=4」を設定すると、
もう一度乱数で「4」が出力されます。
指定した値が復活した場合は、デバッグ文などは表示されませんが、
まだ出力されてなかった場合や既に復活済みだった場合、
または乱数の範囲外(乱数[1〜5]に対して「0」や「6」を復活)だった場合は、
デバッグ文でエラーが表示されます。
復活の有無(エラーの有無)に関係なく、乱数の出力結果は「-999999」になります。
9 乱数の範囲 現在処理している乱数の範囲を「下限-上限」と言った形式で保存します。
例えば「下限=1」「上限=5」の場合は「1-5」の文字列が保存されます。
このセルフ変数[9]は「文字列が無い=乱数の出力値を初期化する」となっているので、
乱数の範囲が「1〜5」から「1〜8」などと変わった時や、
セルフ変数[0:処理方法]で「2:出力(全て復活)」を設定している時には、
このセルフ変数[9]の文字列が全て削除され、初期化が実行されるようになっています。
10 乱数の数 乱数の範囲内にある値の数(最大数)を設定します。
11 残り値の数 まだ出力していない値の数を設定します。
12 乱数下限 セルフ変数[1:乱数範囲下限]の値をコピー。
13 乱数上限 セルフ変数[2:乱数範囲上限]の値をコピー。
14 処理用01 計算処理用。
15 処理用02 計算処理用。
16 処理用03 計算処理用。
17 乱数の結果 乱数で出力した値を設定し、
このコモンイベントを呼び出したイベントへ処理結果を返します。
18 可変タイプID 乱数用の可変DBのタイプIDを設定。
※「可変DBに保存」のみで使用。
20-99 乱数用 乱数の値を保存。
※「コモンセルフに保存」のみで使用。



コモンイベントの処理方法が2種類用意されているため、どちらか良い方を選択してください。

保存方法 仕様
コモンセルフに保存 コモンイベントのセルフ変数[20〜99]に乱数で出力する値を保存し、
乱数で出力したら、その値を削除します。
保存できる値の数は最大80個です。
例えば乱数[110〜189]の場合は、出力する値が80個なので処理する事ができますが、
乱数[110〜190]などと81個以上になった場合は処理する事ができず、エラーが発生します。
可変DBに保存 可変DBに乱数で出力する値をデータIDごとに保存し、
乱数で出力したら、その値があるデータIDを削除します。
保存できる値の数は最大1万個です。
乱数用の可変DBの準備が必要です。
初期化する際、乱数の値の数に比例して処理落ちが発生します。

乱数[1〜5]と乱数[10〜19]を同時に処理する場合や、用途の異なる2つの乱数[1〜5]を同時に処理する場合など、
複数の乱数を同時に処理したい時には、コモンイベント名を変えた複数のコモンイベントを用意して、
乱数ごとに使用するコモンイベントを変えてください。

可変DBに保存」の場合は、コモンイベントの数だけ可変DBを用意し、
コモンイベントごとに使用する可変DBを変えてください。



▼乱数の値を可変DBに保存までジャンプ▼


▲トップへ戻る▲


  
■乱数の値をコモンセルフに保存

コモンイベントのセルフ変数[20〜99]に乱数で出力する値を保存して処理します。

例えば乱数[15〜18]の場合は…
セルフ[20]=15
セルフ[21]=16
セルフ[22]=17
セルフ[23]=18
と保存されます。

乱数[15〜18]で「16」が出力された場合は…
セルフ[20]=15
セルフ[21]=17
セルフ[22]=18
となり、「16」を保存していたセルフ変数[21]には「17」が保存され、
以降1つずつ値を保存するセルフ変数がずれています。

乱数[15〜18]で「16」が出力したあとに「16」を復活させた場合は…
セルフ[20]=15
セルフ[21]=17
セルフ[22]=18
セルフ[23]=
16
と言ったように、後ろに追加されます。



【イベントコード表示】【コモン出力ファイル】

■コモンイベント「乱数二重防止(セルフ)」

起動条件:呼び出しのみ

入力の数 / 結果を返す
設定 名前 初期値 特殊指定
数値1 処理方法 0 [0]出力(枯渇時エラー)
[1]出力(枯渇時復活)
[2]出力(全て復活)
[10]出力済み値を復活
数値2 乱数範囲下限 0  
数値3 乱数範囲上限 9  
数値4 復活させる値 0  
返す値 乱数出力値 コモンセルフ17[数]:乱数の結果

▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■指定した値を復活させて、再び出力できるようにする
■条件分岐(変数): 【1】 CSelf0[処理方法] が 10 と同じ
-◇分岐: 【1】 [ CSelf0[処理方法] が 10 と同じ ]の場合↓
|■変数操作: CSelf17[乱数の結果] = -999999 + 0
|■条件分岐(文字): 【1】 CSelf9[乱数の範囲]が "" と同じ
|-◇分岐: 【1】 [ CSelf9[乱数の範囲] "" と同じ ]の場合↓
||■デバッグ文:▼乱数:値の復活中断\n乱数を一度も実行していません
||■イベント処理中断
||■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf3[復活させる値] が CSelf12[乱数下限] 未満
          【2】 CSelf3[復活させる値] が CSelf13[乱数上限] 超
|-◇分岐: 【1】 [ CSelf3[復活させる値] が CSelf12[乱数下限] 未満 ]の場合↓
||■デバッグ文:▼乱数:値の復活中断\n「\cself[3]」は乱数の範囲外です\n現在の乱数範囲「\cself[12]〜\cself[13]」
||■イベント処理中断
||■
|-◇分岐: 【2】 [ CSelf3[復活させる値] が CSelf13[乱数上限] 超 ]の場合↓
||■デバッグ文:▼乱数:値の復活中断\n「\cself[3]」は乱数の範囲外です\n現在の乱数範囲「\cself[12]〜\cself[13]」
||■イベント処理中断
||■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf11[残り値の数] が CSelf10[乱数の数] 以上
|-◇分岐: 【1】 [ CSelf11[残り値の数] が CSelf10[乱数の数] 以上 ]の場合↓
||■デバッグ文:▼乱数:値の復活中断\n「\cself[3]」は出力可能状態です
||■イベント処理中断
||■
|◇分岐終了◇
|■変数操作: CSelf14[処理用01] = 1600019 + 0
|■回数付きループ [ CSelf11[残り値の数] ]回
||■変数操作: CSelf14[処理用01] += 1 + 0
||■変数操作: CSelf15[処理用02] = V[CSelf14[処理用01]] + 0
||■条件分岐(変数): 【1】 CSelf3[復活させる値] が CSelf15[処理用02] と同じ
||-◇分岐: 【1】 [ CSelf3[復活させる値] が CSelf15[処理用02] と同じ ]の場合↓
|||■デバッグ文:▼乱数:値の復活中断\n「\cself[3]」は出力可能状態です
|||■イベント処理中断
|||■
||◇分岐終了◇
||■ループ開始へ戻る
||■
|◇ループここまで◇◇
|■変数操作: CSelf14[処理用01] = 1600020 + CSelf11[残り値の数]
|■変数操作: CSelf11[残り値の数] += 1 + 0
|■変数操作: V[CSelf14[処理用01]] = CSelf3[復活させる値] + 0
|■イベント処理中断
|■
◇分岐終了◇
▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■下限と上限を入れ替え
■条件分岐(変数): 【1】 CSelf1[乱数範囲下限] が CSelf2[乱数範囲上限] 超
-◇分岐: 【1】 [ CSelf1[乱数範囲下限] が CSelf2[乱数範囲上限] 超 ]の場合↓
|■変数操作: CSelf14[処理用01] = CSelf1[乱数範囲下限] + 0
|■変数操作: CSelf1[乱数範囲下限] = CSelf2[乱数範囲上限] + 0
|■変数操作: CSelf2[乱数範囲上限] = CSelf14[処理用01] + 0
|■
◇分岐終了◇
▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■値のデータを初期化
■条件分岐(変数): 【1】 CSelf0[処理方法] が 2 と同じ
-◇分岐: 【1】 [ CSelf0[処理方法] が 2 と同じ ]の場合↓
|■文字列操作:CSelf9[乱数の範囲] = ""
|■
◇分岐終了◇
■条件分岐(文字): 【1】 CSelf9[乱数の範囲]が "\cself[1]-\cself[2]" 以外
         【2】 CSelf9[乱数の範囲]が "" と同じ
-◇分岐: 【1】 [ CSelf9[乱数の範囲] "\cself[1]-\cself[2]" 以外 ]の場合↓
|■文字列操作:CSelf9[乱数の範囲] = ""
|■
-◇分岐: 【2】 [ CSelf9[乱数の範囲] "" と同じ ]の場合↓
|■
-◇上記以外
|■条件分岐(変数): 【1】 CSelf11[残り値の数] が 0 と同じ
|-◇分岐: 【1】 [ CSelf11[残り値の数] が 0 と同じ ]の場合↓
||■条件分岐(変数): 【1】 CSelf0[処理方法] が 0 と同じ
||-◇分岐: 【1】 [ CSelf0[処理方法] が 0 と同じ ]の場合↓
|||■変数操作: CSelf17[乱数の結果] = -999999 + 0
|||■デバッグ文:▼乱数エラー\n全ての値が出力済みです。
|||■イベント処理中断
|||■
||◇分岐終了◇
||■文字列操作:CSelf9[乱数の範囲] = ""
||■デバッグ文:▼乱数\n全ての値が出力済みになったので、\n初期化して全ての値を復活させました
||■
|◇分岐終了◇
|■
◇分岐終了◇
■条件分岐(文字): 【1】 CSelf9[乱数の範囲]が "" と同じ
-◇分岐: 【1】 [ CSelf9[乱数の範囲] "" と同じ ]の場合↓
|■変数操作: CSelf10[乱数の数] = CSelf2[乱数範囲上限] - CSelf1[乱数範囲下限]
|■変数操作: CSelf10[乱数の数] += 1 + 0
|■条件分岐(変数): 【1】 CSelf10[乱数の数] が 80 超
|-◇分岐: 【1】 [ CSelf10[乱数の数] が 80 超 ]の場合↓
||■変数操作: CSelf17[乱数の結果] = -999999 + 0
||■デバッグ文:▼乱数エラー\n乱数の範囲が広すぎます。\n乱数の値の数「\cself[10]」/上限数「80」
||■イベント処理中断
||■
|◇分岐終了◇
|■文字列操作:CSelf9[乱数の範囲] = "\cself[1]-\cself[2]"
|■変数操作: CSelf11[残り値の数] = CSelf10[乱数の数] + 0
|■変数操作: CSelf12[乱数下限] = CSelf1[乱数範囲下限] + 0
|■変数操作: CSelf13[乱数上限] = CSelf2[乱数範囲上限] + 0
|■変数操作: CSelf2[乱数範囲上限] = 1600020 + 0
|■回数付きループ [ CSelf10[乱数の数] ]回
||■変数操作: V[CSelf2[乱数範囲上限]] = CSelf1[乱数範囲下限] + 0
||■変数操作: CSelf1[乱数範囲下限]〜CSelf2[乱数範囲上限] += 1 + 0
||■ループ開始へ戻る
||■
|◇ループここまで◇◇
|■
◇分岐終了◇
▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■乱数の値を出力
■変数操作: CSelf11[残り値の数] -= 1 + 0
■変数操作: CSelf14[処理用01] = 0 〜 CSelf11[残り値の数]
■変数操作: CSelf16[処理用03] = CSelf11[残り値の数] - CSelf14[処理用01]
■変数操作: CSelf14[処理用01] += 1600020 + 0
■変数操作: CSelf17[乱数の結果] = V[CSelf14[処理用01]] + 0
▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■出力した値を削除
■変数操作: CSelf15[処理用02] = CSelf14[処理用01] + 1
■回数付きループ [ CSelf16[処理用03] ]回
|■変数操作: V[CSelf14[処理用01]] = V[CSelf15[処理用02]] + 0
|■変数操作: CSelf14[処理用01]〜CSelf15[処理用02] += 1 + 0
||■ループ開始へ戻る
|■
◇ループここまで◇◇



コモンイベントを呼び出す【イベントの挿入】は以下のように設定します。

▼乱数[0〜9]
【イベントコード表示(マップ)】【イベントコード表示(コモン)】

■イベントの挿入[名]: CSelf10 = ["乱数二重防止(セルフ)"] <コモンEv 215> / 0:出力(枯渇時エラー) / 0 / 9 / 0
■デバッグ文:「\cself[10]」を出力

▼出力値「3」を復活
【イベントコード表示(マップ・コモン)】

■イベントの挿入[名]: ["乱数二重防止(セルフ)"] <コモンEv 215> / 10:出力済み値を復活 / 0 / 9 / 3

▼出力値「3」を復活させた上で乱数[0〜9]
【イベントコード表示(マップ)】【イベントコード表示(コモン)】

■イベントの挿入[名]: ["乱数二重防止(セルフ)"] <コモンEv 215> / 10:出力済み値を復活 / 0 / 9 / 3
■イベントの挿入[名]: CSelf10 = ["乱数二重防止(セルフ)"] <コモンEv 215> / 0:出力(枯渇時エラー) / 0 / 9 / 0
■デバッグ文:「\cself[10]」を出力


▲トップへ戻る▲


  
■乱数の値を可変DBに保存

可変DBに乱数で出力する値を保存して処理します。

例えば乱数[15〜18]の場合は…
データID[0]=15
データID[1]=16
データID[2]=17
データID[3]=18
と保存されます。

乱数[15〜18]で「16」が出力された場合は…
データID[0]=15
データID[1]=17
データID[2]=18
となり、「16」を保存していたデータIDが削除され、
乱数の値を保存しているデータIDが1つずつずれています。

乱数[15〜18]で「16」「17」が出力されて…
データID[0]=15
データID[1]=18
となったあとに「16」を復活させた場合は…
データID[0]=15
データID[1]=16
データID[2]=18
と言ったように、並び順に合わせて復活します。



可変DBにタイプ「乱数用」を準備してください。





データ数は「1」にしてください。



【イベントコード表示】【コモン出力ファイル】

■コモンイベント「乱数二重防止(可変DB)」

起動条件:呼び出しのみ

入力の数 / 結果を返す
設定 名前 初期値 特殊指定
数値1 処理方法 0 [0]出力(枯渇時エラー)
[1]出力(枯渇時復活)
[2]出力(全て復活)
[10]出力済み値を復活
数値2 乱数範囲下限 0  
数値3 乱数範囲上限 9  
数値4 復活させる値 0  
返す値 乱数出力値 コモンセルフ17[数]:乱数の結果

■DB読込(可変): CSelf18[可変タイプID] = 可変DB[タイプ乱数用(20) のタイプ番号]
▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■指定した値を復活させて、再び出力できるようにする
■条件分岐(変数): 【1】 CSelf0[処理方法] が 10 と同じ
-◇分岐: 【1】 [ CSelf0[処理方法] が 10 と同じ ]の場合↓
|■変数操作: CSelf17[乱数の結果] = -999999 + 0
|■条件分岐(文字): 【1】 CSelf9[乱数の範囲]が "" と同じ
|-◇分岐: 【1】 [ CSelf9[乱数の範囲] "" と同じ ]の場合↓
||■デバッグ文:▼乱数:値の復活中断\n乱数を一度も実行していません
||■イベント処理中断
||■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf3[復活させる値] が CSelf12[乱数下限] 未満
          【2】 CSelf3[復活させる値] が CSelf13[乱数上限] 超
|-◇分岐: 【1】 [ CSelf3[復活させる値] が CSelf12[乱数下限] 未満 ]の場合↓
||■デバッグ文:▼乱数:値の復活中断\n「\cself[3]」は乱数の範囲外です\n現在の乱数範囲「\cself[12]〜\cself[13]」
||■イベント処理中断
||■
|-◇分岐: 【2】 [ CSelf3[復活させる値] が CSelf13[乱数上限] 超 ]の場合↓
||■デバッグ文:▼乱数:値の復活中断\n「\cself[3]」は乱数の範囲外です\n現在の乱数範囲「\cself[12]〜\cself[13]」
||■イベント処理中断
||■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf11[残り値の数] が CSelf10[乱数の数] 以上
|-◇分岐: 【1】 [ CSelf11[残り値の数] が CSelf10[乱数の数] 以上 ]の場合↓
||■デバッグ文:▼乱数:値の復活中断\n「\cself[3]」は出力可能状態です
||■イベント処理中断
||■
|◇分岐終了◇
|■変数操作: CSelf14[処理用01] = -1 + 0
|■DB読込(可変): CSelf16[処理用03] = 可変DB[タイプCSelf18[可変タイプID](-)のデータ数]
|■回数付きループ [ CSelf16[処理用03] ]回
||■変数操作: CSelf14[処理用01] += 1 + 0
||■DB読込(可変): CSelf15[処理用02] = 可変DB[ CSelf18[可変タイプID] : CSelf14[処理用01] : 0 ] (- : - : ×NoData)
||■条件分岐(変数): 【1】 CSelf3[復活させる値] が CSelf15[処理用02] と同じ
          【2】 CSelf3[復活させる値] が CSelf15[処理用02] 未満
||-◇分岐: 【1】 [ CSelf3[復活させる値] が CSelf15[処理用02] と同じ ]の場合↓
|||■デバッグ文:▼乱数:値の復活中断\n「\cself[3]」は出力可能状態です
|||■イベント処理中断
|||■
||-◇分岐: 【2】 [ CSelf3[復活させる値] が CSelf15[処理用02] 未満 ]の場合↓
|||■DBに新規データ挿入: 可変DB[CSelf18[可変タイプID]:CSelf14[処理用01]] の直前に データ [ 1 ]個の新データを挿入
|||■可変DB書込:DB[ CSelf18[可変タイプID] : CSelf14[処理用01] : 0 ] (- : - : ×NoData) = CSelf3[復活させる値]
|||■変数操作: CSelf11[残り値の数] += 1 + 0
|||■イベント処理中断
|||■
||◇分岐終了◇
||■ループ開始へ戻る
||■
|◇ループここまで◇◇
|■可変DB書込:DB[ CSelf18[可変タイプID] : CSelf11[残り値の数] : 0 ] (- : - : ×NoData) = CSelf3[復活させる値]
|■変数操作: CSelf11[残り値の数] += 1 + 0
|■イベント処理中断
|■
◇分岐終了◇
▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■下限と上限を入れ替え
■条件分岐(変数): 【1】 CSelf1[乱数範囲下限] が CSelf2[乱数範囲上限] 超
-◇分岐: 【1】 [ CSelf1[乱数範囲下限] が CSelf2[乱数範囲上限] 超 ]の場合↓
|■変数操作: CSelf14[処理用01] = CSelf1[乱数範囲下限] + 0
|■変数操作: CSelf1[乱数範囲下限] = CSelf2[乱数範囲上限] + 0
|■変数操作: CSelf2[乱数範囲上限] = CSelf14[処理用01] + 0
|■
◇分岐終了◇
▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■値のデータを初期化
■条件分岐(変数): 【1】 CSelf0[処理方法] が 2 と同じ
-◇分岐: 【1】 [ CSelf0[処理方法] が 2 と同じ ]の場合↓
|■文字列操作:CSelf9[乱数の範囲] = ""
|■
◇分岐終了◇
■条件分岐(文字): 【1】 CSelf9[乱数の範囲]が "\cself[1]-\cself[2]" 以外
         【2】 CSelf9[乱数の範囲]が "" と同じ
-◇分岐: 【1】 [ CSelf9[乱数の範囲] "\cself[1]-\cself[2]" 以外 ]の場合↓
|■文字列操作:CSelf9[乱数の範囲] = ""
|■
-◇分岐: 【2】 [ CSelf9[乱数の範囲] "" と同じ ]の場合↓
|■
-◇上記以外
|■条件分岐(変数): 【1】 CSelf11[残り値の数] が 0 と同じ
|-◇分岐: 【1】 [ CSelf11[残り値の数] が 0 と同じ ]の場合↓
||■条件分岐(変数): 【1】 CSelf0[処理方法] が 0 と同じ
||-◇分岐: 【1】 [ CSelf0[処理方法] が 0 と同じ ]の場合↓
|||■変数操作: CSelf17[乱数の結果] = -999999 + 0
|||■デバッグ文:▼乱数エラー\n全ての値が出力済みです。
|||■イベント処理中断
|||■
||◇分岐終了◇
||■文字列操作:CSelf9[乱数の範囲] = ""
||■デバッグ文:▼乱数\n全ての値が出力済みになったので、\n初期化して全ての値を復活させました
||■
|◇分岐終了◇
|■
◇分岐終了◇
■条件分岐(文字): 【1】 CSelf9[乱数の範囲]が "" と同じ
-◇分岐: 【1】 [ CSelf9[乱数の範囲] "" と同じ ]の場合↓
|■変数操作: CSelf10[乱数の数] = CSelf2[乱数範囲上限] - CSelf1[乱数範囲下限]
|■変数操作: CSelf10[乱数の数] += 1 + 0
|■条件分岐(変数): 【1】 CSelf10[乱数の数] が 10000 超
|-◇分岐: 【1】 [ CSelf10[乱数の数] が 10000 超 ]の場合↓
||■変数操作: CSelf17[乱数の結果] = -999999 + 0
||■デバッグ文:▼乱数エラー\n乱数の範囲が広すぎます。\n乱数の値の数「\cself[10]」/上限数「\cself[21]」
||■イベント処理中断
||■
|◇分岐終了◇
|■文字列操作:CSelf9[乱数の範囲] = "\cself[1]-\cself[2]"
|■変数操作: CSelf11[残り値の数] = CSelf10[乱数の数] + 0
|■変数操作: CSelf12[乱数下限] = CSelf1[乱数範囲下限] + 0
|■変数操作: CSelf13[乱数上限] = CSelf2[乱数範囲上限] + 0
|■可変DB書込:[タイプ CSelf18[可変タイプID](-) を初期化]
|■変数操作: CSelf2[乱数範囲上限] = 0 + 0
|■回数付きループ [ CSelf10[乱数の数] ]回
||■可変DB書込:DB[ CSelf18[可変タイプID] : CSelf2[乱数範囲上限] : 0 ] (- : - : ×NoData) = CSelf1[乱数範囲下限]
||■変数操作: CSelf1[乱数範囲下限]〜CSelf2[乱数範囲上限] += 1 + 0
||■ループ開始へ戻る
||■
|◇ループここまで◇◇
|■
◇分岐終了◇
▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■乱数の値を出力
■変数操作: CSelf11[残り値の数] -= 1 + 0
■変数操作: CSelf14[処理用01] = 0 〜 CSelf11[残り値の数]
■DB読込(可変): CSelf17[乱数の結果] = 可変DB[ CSelf18[可変タイプID] : CSelf14[処理用01] : 0 ] (- : - : ×NoData)
▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■出力した値を削除
■DBからデータを抜き取り: 可変DB[CSelf18[可変タイプID]:CSelf14[処理用01]] から [ 1 ]個のデータを抜き取り



コモンイベントを呼び出す【イベントの挿入】は以下のように設定します。

▼乱数[0〜9]
【イベントコード表示(マップ)】【イベントコード表示(コモン)】

■イベントの挿入[名]: CSelf10 = ["乱数二重防止(可変DB)"] <コモンEv 215> / 0:出力(枯渇時エラー) / 0 / 9 / 0
■デバッグ文:「\cself[10]」を出力

▼出力値「3」を復活
【イベントコード表示(マップ・コモン)】

■イベントの挿入[名]: ["乱数二重防止(可変DB)"] <コモンEv 215> / 10:出力済み値を復活 / 0 / 9 / 3

▼出力値「3」を復活させた上で乱数[0〜9]
【イベントコード表示(マップ)】【イベントコード表示(コモン)】

■イベントの挿入[名]: ["乱数二重防止(可変DB)"] <コモンEv 215> / 10:出力済み値を復活 / 0 / 9 / 3
■イベントの挿入[名]: CSelf10 = ["乱数二重防止(可変DB)"] <コモンEv 215> / 0:出力(枯渇時エラー) / 0 / 9 / 0
■デバッグ文:「\cself[10]」を出力



可変DBのタイプ「乱数用」を別のタイプ名に変える場合は、コモンイベントの0行目にある…
■DB読込(可変): CSelf18[可変タイプID] = 可変DB[タイプ乱数用(20) のタイプ番号]
の「乱数用」の部分を変えてください。


▲トップへ戻る▲



◎関連ページ

◆「変数」って何?
┣◆「セルフ変数」って何?
┣◆「通常変数」「予備変数」って何?
┣◆「文字列変数」って何?
┣◆「システム変数」「システム文字列」って何?
┃◆システム変数[0〜34]の説明
┃┣◆システム変数[35〜76]の説明
┃┣◆システム変数[77〜120]の説明
┃┣◆システム変数[121〜148]の説明
┃┣◆システム文字列[0〜49]の説明
┃┗◆システム文字列[50〜76]の説明
┣◆「変数呼び出し値」「X番の変数呼出」って何?
┃┗◆【使用例】「変数呼び出し値」「X番の変数呼出」
┣◆「乱数」って何?
┃┗◆乱数で一度出力した値を二重に出力させない
┗◆変数の番号や文字列を別のものに置き換える

YADOT-WOLFトップ  気紛れな空間へ戻る  メール