def nonNegativeLessThan(n:Int):Rand[Int]=
map(nonNegativeInt) { i=>
val mod = i % n
if (i + (n-1) -mod >= 0) mod else nonNegaativeLessThan(n)(???)
i+(n-1)-mod>=0がnの最大の倍数より大きいことを意味するといっているが、わかりにくい。
i-modは、nの倍数だが、これが、最大の倍数でないならば、これにn-1をたしても、32ビット整数におさまる。(つまり>=0ということか?)しかし、最大の倍数ならば、これにn-1を足すと、<0になるということなんだろうか?そして、<0ということは、i-modが最大の倍数なので、iが最大の倍数より大きい数であり、nonNegativeLessThanをリトライする。と理解したがいいんだろうか?
0 件のコメント:
コメントを投稿