|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Max Alekseyev 2:5015/60 16 Jun 2002 16:34:32 To : Alexander Kazak Subject : как рандомить подскажите плиз --------------------------------------------------------------------------------
Replying to a message of Alexander Kazak to All:
AK> У меня есть натуральное число N и натуральное число K<N. Как написать
AK> процедуру на Паскале, которая возвращает K случайных натуральных
AK> чисел, причём сумма их равна N?
Выбираешь случайное сочетание K-1 элементов из N-1. Hапример, генерируешь
случайную перестановку 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)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/18133d0cbf5a.html, оценка из 5, голосов 10
|