как рандомить подскажите плиз
- From
- Max Alekseyev (2:5015/60)
- To
- Alexander Kazak
- Date
- 2002-06-16T16:34:32Z
- Area
- RU.ALGORITHMS
████ OS/2 Hi, Alexander !
Replying to a message of Alexander Kazak to All:
AK> У меня есть натуральное число N и натуральное число K<N. Как написать
AK> процедуру на Паскале, которая возвращает K случайных натуральных
AK> чисел, причём сумма их равна N?
Выбираешь случайное сочетание K-1 элементов из N-1. Например, генерируешь случайную перестановку N-1 элементов классическим образом, и отбираешь первые K-1 элемент.
Теперь по элементам 1 <= X[1] < X[2] < ... < X[K-1] <= N-1 определяешь
Y[1] = X[1]
Y[2] = X[2]-X[1]
Y[3] = X[3]-X[2]
...
Y[K-1] = X[K-1]-X[K-2]
Y[K] = N - X[K-1]
Очевидно, Y[1] + Y[2] + ... + Y[K] = N
Regards, °°
Max ~
--- OS/2 Uptime: 1d 18h 42m 41s 289ms
* Origin: Медведь выходит на охоту душить собак. (2:5015/60)