Есть вот такая задача: Сгенерировать массив чисел, сумма которых составит 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-переменную во избежание переполнений.
Комментариев нет:
Отправить комментарий