Это может быть лучше, если 2 вопроса ...
Re new Random().Next()
- это, очевидно, умрет в узком цикле, поэтому существующий random.Next()
будет более случайным ;-p Но вы возможно хотите криптографическую случайность - что-то вроде:
var random = new RNGCryptoServiceProvider();
byte[] bytes = new byte[4];
random.GetBytes(bytes);
int i = BitConverter.ToInt32(bytes, 0);
Обратите внимание, что это усложняет тестирование, так как его нельзя посеять и т.д. ...