Пишется минут за 5 на любом языке.
Вот на Haskell-е
Код
import System.Random
import Debug.Trace
get_parts num bounds@(lo, hi) xx yy
| num == x = x:yy
| num < lo && null yy = []
| num < lo = get_parts (num + y) bounds xx ys
| num < x = get_parts num bounds xs yy
| otherwise = get_parts (num - x) bounds xs (x:yy)
where
x:xs = xx
y:ys = yy
gen_summ :: Int -> (Int, Int) -> IO [Int]
gen_summ num bounds = do
gen <- getStdGen
let rnds = randomRs bounds gen
return $ get_parts num bounds rnds []
-- проверяем
main = do
parts <- gen_summ 10 (1, 7)
print parts
П. С. Не ясно какое отношение имеет к Web-у. Надо бы в программирование перенести.