剰余じゃ偏るみたいなので、2番目のロジックは乱数の最大値+1で割ることで割合を一様にしているのですが、どうにも偏ります。
XorShiftにしているのは速度が欲しかったからです。
乗算合同法のような高速な乱数生成と組み合わせてみようと思います。