RNGCryptoServiceProvider: генерировать случайные числа в диапазоне [0, randomMax)

Я написал следующий код для генерации случайных чисел в диапазоне [0, int.MaxValue) , но я не знал, как ограничить диапазон до [0, randomMax) при сохранении равномерного распределения:

private static int GetNextInt32(this RNGCryptoServiceProvider random)
{
  var buffer = new byte[sizeof(int)];
  random.GetBytes(buffer);
  return Math.Abs(BitConverter.ToInt32(buffer, 0));
}

Спасибо.

5
задан Hadi 24 May 2011 в 15:23
поделиться