Генератор случайных чисел в C#

Случайные числа C# 

Язык Си Шарп предоставляет большие возможности для генерации случайных величин. 

Если вам нужно получить генерацию целых или дробных чисел, то можно это сделать следующим образом: 

Генерация целых случайных чисел C# имеет 3 перегруженных метода: 
1. Возвращает значение большее нуля. Максимальное число больше 10 миллионов: Random x = new Random(); // объявление переменной для генерации чисел int n = x.Next(); 
2. Возвращает значение имеющееся в промежутке (min,max). При этом min значение входит в случайное число, а max не входит: int n= x.Next(-100,100); 
3. Возвращает целое положительное число не больше максимального: 
int n = x.Next(10); 
При этом максимальное число также не входит в генерацию случайных чисел, то есть в данном случае от 0 до 9.   

Генерация дробных случайных чисел В языке C# методов для генерации дробных чисел, но это не проблема, так как если нам надо получить дробные числа, мы можем сделать это следующим образом: 
double r = Convert.ToDouble(x.Next(-100, 100)/10.0); 

В данном случае мы имеем числа от -10 до 9.9. Также само, к примеру иметь положительные дробные числа: 
double r = Convert.ToDouble(x.Next(100)/10.0); 
В данном случае мы имеем генерацию от 0 до 9.9.

Генерация случайного числа в Java


Для генерации целого случайного числа в заданном диапазоне от Min до Max, обычно используется следующий паттерн:

Min + (int)(Math.random() * ((Max - Min) + 1))

В Java метод Math.random() генерирует число типа double в диапазоне [0,1). Обратите внимание, что 1 не входит в этот диапазон!
Чтобы получить определенный диапазон значений, сначала нужно умножить на разницу между максимумом и минимумом

Math.random() * ( Max - Min )

Это вернет нам значение в диапазоне [0,Max-Min].
К примеру, если мы хотим получить целые значения [5,10], нам нужно покрыть диапазон в 5 целых(int) значений. То есть:

Math.random() * 5

Данный пример будет генерировать значения в диапазоне [0,5).
Теперь нам нужно сдвинуть этот диапазон, чтобы минимальное значение соответствовало желаемому. Для этого мы просто добавляем значение минимума

Min + (Math.random() * (Max - Min))

Теперь мы получим значение в диапазоне [Min,Max). Продолжая наш пример, это будет [5,10):

5 + (Math.random() * (10 - 5))

Но этот вариант все равно не включает значение Max, и вообще, мы получаем значение типа double. Для того чтобы значение Max тоже входило в допустимый диапазон, нужно прибавить 1 к нашему параметру диапазона (Max - Min) и затем избавиться от дробной части приведением значения к int. Вот так:

Min + (int)(Math.random() * ((Max - Min) + 1))

Теперь то что надо! Случайное целое значение в диапазоне [Min,Max], или как в нашем случае [5,10]:

int rnd = 5 + (int)(Math.random() * ((10 - 5) + 1))