Страницы

Поиск по вопросам

четверг, 4 октября 2018 г.

Генерация случайных дробных чисел

Есть вот такая задача: Сгенерировать массив чисел, сумма которых составит 1. Кол-во чисел вводится с клавиатуры. Решение может быть любое главное получить итоговую сумму 1 (Не желательно большое кол-во нулей)


Ответ

Генерируем N любых неотрицательных чисел. Вычисляем их сумму. Делим каждое на эту сумму.
Пример реализации:
int count = 10; Random random = new Random(); int[] integers = new int[count]; long sum = 0; for (int i = 0; i < count; ++i) { integers[i] = random.Next(); sum += integers[i]; } double[] doubles = new double[count]; for (int i = 0; i < count; ++i) doubles[i] = (double)integers[i] / sum; Console.WriteLine(string.Join("
", doubles)); Console.WriteLine(doubles.Sum());
random.Next() возвращает неотрицательное случайное целое число. Для накопления суммы берем long-переменную во избежание переполнений.

Комментариев нет:

Отправить комментарий