(sys-random)が
偶数なら 表
奇数なら 裏
と みなすとよいね
整数を引数としたとき
商を求める手続きは
quotient
整数を引数としたとき
剰余を求める手続きは
modulo
または
remainder
(quotient 10 7)
(modulo 10 7)
(remainder 10 7)
(quotient 10 7) → 1
(modulo 10 7) → 3
(remainder 10 7) → 3
(even? (sys-random))
偶数か?
(zero? (modulo (sys-random) 2))
2で割った余りが0か?
(= (modulo (sys-random) 2) 0)
2で割った余りが0と等しいか
(integer? (/ (sys-random) 2))
2で割った数が 整数になるか?
任意の n aで
(=
(+ (* (quotient n a) a)
(modulo n a))
n)
なので
(define tmp (sys-random))
(= (* (quotient tmp 2) 2) tmp)
局所変数の let を使うと
(let ((tmp (sys-random)))
(= (* (quotient tmp 2) 2) tmp))
(define goosuu? (lambda (n) (integer? (/ n 2))))
として
(goosuu? (sys-random))
偶数か?を判定する
としたほうが、偶数か?どうか を判定していることが
分かりやすくなるよ
(integer? (/ (sys-random) 2))
と、書いて後からこれを読んだ時に
即座に 偶数か?を判定するコードとは
気づきにくよね
ジャンケンは3通りなので
なので 3で割った余りを考える
よい