@estry

Как разбить число на части?

Привет. Нужна разбить число на неравные части.

Лучше на примере покажу.

Есть число 2000. Число может быть и отрицательным.
Его надо разбить на рандомное количество частей, например в диапазоне от 5 до 10. К примеру выпало разбить на 8 неравных частей. На выходе к примеру получим:
203, 242,274,215,301,402,112,159,92

На выходе массив int получаем.

Также можно сделать погрешность. То есть в сумме получаем не ровно 2000, а можно 2100 получить.
  • Вопрос задан
  • 647 просмотров
Решения вопроса 1
devspec
@devspec
Помогло? Отметь решением
Боюсь представить, для чего такое может понадобиться, но раз просят:

int num = 2000;
int parts = 10;
Random rnd = new Random();

List<int> result = new List<int>();

for (int i = 0; i < parts - 1; i++)
{
    int tmp = rnd.Next(0, num / 2);
    if (tmp == 0) { i--; continue; } 
    result.Add(tmp);
    num -= tmp;
}

result.Add(2000 - result.Sum());

result = result.OrderBy(i => Guid.NewGuid()).ToList();

Console.WriteLine(result.Sum());
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
freeExec
@freeExec
Участник OpenStreetMap
Ну если даже в сумме можно не получать обратно 2000, то вообще легко.
Делим 2000 на 8 получаем базовое число. Потом просто к этому базовому числу прибавляем или отнимает какое-то случайное число.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы