Batch, 182182 145 bytes
@set/an=%1,r=n*n,l=r+1
@for /l %%i in (%1,-1,1)do @call:c
@exit/b
:c
@set/at=n*(n-=1)/2,x=r+1-t,m=(r+t+n)/-~n
@if %l% leq %x% set/ax=l
@set/al=m+%random%%%,r-=l=m+%random%%%(x(l-m=x=r+1-t),r*(l^>^>31)+x-=l
@echom)&call %l%echo %%l%%
Explanation: Calculates the minimum and maximum allowable pick, given that the numbers are to be picked in descending order, and chooses a random value within the range. Example for an input of 4
:
- We start with 16 left. We can't pick 11 or more because the remaining 3 picks must add to at least 6. We also need to pick at least 6, because if we only pick 5, the remaining 3 picks can only add to 9, which isn't enough for 16. We pick a random value from 6 to 10, say 6.
- We have 10 left. We can't pick 8 or more because the remaining 2 picks must add to at least 3. As it happens, we can't pick 6 or more because we picked 6 last time. We also need to pick at least 5, because if we only pick 4, the remaining 2 picks can only add to 5, for a grand total of 15. We pick a random value from 5 to 5, say 5 (!).
- We have 5 left. We can't pick 5 or more because the remaining pick must add to at least 1, and also because we picked 5 last time. We also need to pick at least 3, because if we only pick 2, the remaining pick can only be 1, for a grand total of 14. We pick a random value from 3 to 4, say 4.
- We have 1 left. As it turns out, the algorithm chooses a range of 1 to 1, and we pick 1 as the final number.