乱数については,オーソドックスですが /dev/urandom から読み込むのも手ですね.
ただし毎回オープンして読むのはコストが高い気もするので,例えば1000回分ぐらい
まとめて読んでそれを使っていき,使い切ったらまたまとめて読む,というのも一案かも.