Как сгенерировать случайное дробное число из интервала?
Есть интервал чисел [-10.34; 53.44]. Как сгенерировать случайное дробное число из этого интервала?
Ответы (1 шт):
В 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-объектов в цикле или что-то в этом роде, так как они по умолчанию используют в качестве сида системное время, которое не будет успевать изменяться при быстром создании новых объектов.