Это очень интересная проблема.Мне нравится решение @ Ivan_Ferić, я думаю, оно идеально, но у меня есть другая идея:
int total = 100;
Random rand = new Random();
int half = rand.next(0,total); // the line
a = rand.Next(0,half);
b = max - a;
c = rand.Next(0,half);
d = max - c;
(не проверено, возможно, +/- 1 необходимо добавить к некоторым переменным.) Также вы можете перемешатьзначения.
Интересная часть идет сейчас.Если мы изменим «линию»:
min = <some_value>
max = <another_value>;
int half = rand.next(min,max);
... тогда мы можем точно настроить результат:
- min = 0;макс = 100: оригинал;
- мин = 20;max = 80: избегать маленьких цифр;
- min = 33;max = 100: заставить два числа быть меньше 32.