Random numbers

March 8, 2013

Random values can be set to a variable by specifying maximum and minimum values to the VALUE_SET command.  At execution time, one random number will be chosen inside the specified range and applied to the variable. The following is an example of a rock-paper-scissors game, where one out of the three options is outputted at a time with equal probability.

    1  11   RECOG_EVENT_STOP|じゃんけん      VALUE_SET|x|0|3
    11 12   VALUE_EVENT_SET|x              VALUE_EVAL|x|LE|1
    12 14   VALUE_EVENT_EVAL|x|LE|1|TRUE   SYNTH_START|mei|mei_voice_normal|グー
    12 13   VALUE_EVENT_EVAL|x|LE|1|FALSE  VALUE_EVAL|x|LE|2
    13 14   VALUE_EVENT_EVAL|x|LE|2|TRUE   SYNTH_START|mei|mei_voice_normal|チョキ
    13 14   VALUE_EVENT_EVAL|x|LE|2|FALSE  SYNTH_START|mei|mei_voice_normal|パー
    14  2   SYNTH_EVENT_STOP|mei           <eps>
    ("じゃんけん" means scissors-paper-stone, "グー" is for stone, 
     "チョキ" is for scissors and "パー" is for paper)

In this example, a random value between zero and three will be stored to the variable “x” .  These values are then evaluated by the VALUE_EVENT_EVAL command at each turn and the current value stored in the variable is outputted.

=== Japanese ========================================

音声対話スクリプト (.fst) では変数に乱数を代入することができます.乱数の利用の際には, VALUE_SET コマンドで最大値と最小値を指定します.なお,乱数の値は値を代入した際に固定され,参照・評価には同じ値が使われます.以下にじゃんけんを行う例を示します.

    1  11   RECOG_EVENT_STOP|じゃんけん      VALUE_SET|x|0|3
    11 12   VALUE_EVENT_SET|x              VALUE_EVAL|x|LE|1
    12 14   VALUE_EVENT_EVAL|x|LE|1|TRUE   SYNTH_START|mei|mei_voice_normal|グー
    12 13   VALUE_EVENT_EVAL|x|LE|1|FALSE  VALUE_EVAL|x|LE|2
    13 14   VALUE_EVENT_EVAL|x|LE|2|TRUE   SYNTH_START|mei|mei_voice_normal|チョキ
    13 14   VALUE_EVENT_EVAL|x|LE|2|FALSE  SYNTH_START|mei|mei_voice_normal|パー
    14  2   SYNTH_EVENT_STOP|mei           <eps>

この例では,まず変数 x に 0以上 3 以下の乱数を代入しています.そして, VALUE_EVAL コマンドにより変数に代入された値の評価を行うことで,x の値によってじゃんけんの手を出力します.

Advertisements