Open1
rnd
記号の導入と制約
評価するたびに値が一意に定まらない対象を記号
-
は非負整数で、その取りうる値の範囲は\mathrm{rnd} 以上、かつ\mathrm{rnd_{min}} 以下である。\mathrm{rnd_{max}} \iff \mathrm{rnd} = \left \{ r \mid r \in \left \{ 0, 1, 2, \dots \right \}\ \text{and}\ \mathrm{rnd_{min}} \le r \le \mathrm{rnd_{max}} \right \}. - ただし、
\mathrm{rnd_{min}} \ll \mathrm{rnd_{max}}
- ただし、
-
は“seed”を引数にとる函数であるかもしれない。\mathrm{rnd} ?\iff \mathrm{rnd} := \mathrm{rnd}\left(\mathrm{seed}\right)
求めたい乱数値を記号
-
は非負整数である。x \iff x \in \left\{0, 1, 2, \dots \right\}. - さらに、ある2つの数
を用いて、a, b が取りうる値の範囲はx 以上a 以下と限定される。b \iff \exists a, \exists b; \quad a \le x \le b. - ただし、
であり、常にa, b \in \left\{0, 1, 2, \dots \right\} 。a \lt b
- ただし、
-
はx の函数である。\mathrm{rnd} \iff x := x\left(\mathrm{rand}\right)
端数処理
補遺: プログラミング言語の床函数
Bashの算術式展開では暗黙のうちに最後には0への丸め処理(小数点以下の切り捨て)が行われる。
$ echo $((1.2)) # ⇒エラー
-bash: 1.2: syntax error: invalid arithmetic operator (error token is ".2")
$ echo $((6/5)) # ⇒1.2