Как сгенерировать случайное дробное число из интервала?

Есть интервал чисел [-10.34; 53.44]. Как сгенерировать случайное дробное число из этого интервала?


Ответы (1 шт):

Автор решения: EzikBro

В C# для генерации случайных чисел обычно используется встроенный класс Random. Он реализует несколько методов, генерирующих случайные числа. Для чисел с плавающей запятой используется Random.NextDouble(), который возвращает случайное дробное число в интервале [0; 1).

Так как распределение случайной величины равномерное, то мы можем перевести данный единичный промежуток в любой другой. Пусть вам нужно получить случайное число в промежутке [begin; end), тогда вам необходимо выполнить следующую операцию: RandomObj.NextDouble() * (end - begin) + begin.

Благодаря такому преобразованию, единичный промежуток "растягивается" до нужной вам длины и "передвигается" на нужное начало.

В вашем случае код будет выглядеть так:

Random rnd = new Random();
double val = rnd.NexDouble() * (53.44 + 10.34) - 10.34;

Предупреждение: не используйте создание множества Random-объектов в цикле или что-то в этом роде, так как они по умолчанию используют в качестве сида системное время, которое не будет успевать изменяться при быстром создании новых объектов.

→ Ссылка