关于生成随机数据

灌水区

@[Arkadyevna](/user/363937) 要生成一个数列
by suyue1098765432 @ 2020-08-07 19:59:26


@[Schwarzkopf_Henkal](/user/251723) 人家要和在[l,r]中。。。
by 小恐 @ 2020-08-07 20:02:13


啊这,我爬了,我眼瞎
by Arkadyevna @ 2020-08-07 20:02:41


先$s=\mathrm{rand}[l,r]$,然后$a_{1,2,\dots,n}=\mathrm{rand}[1,s]$,最后排序差分一下
by konjacp @ 2020-08-07 20:02:55


@[suyue1098765432](/user/260748) 大概每个数取个平均?然后造点极端的。
by 小恐 @ 2020-08-07 20:03:43


@[konjacp](/user/186403) 所以说您如何证明生成的数列元素总和在[l,r]之间
by suyue1098765432 @ 2020-08-07 20:04:13


不对$a$应该能取到$0$,然后数列第一项直接是$a_1$(当然让$a_0=0$也可以)
by konjacp @ 2020-08-07 20:04:29


@[suyue1098765432](/user/260748) 只要强制$a_n=s$就好了,因为差分完$\sum_1^na_i-a_{i-1}=a_n-a_0=s\in[l,r]$
by konjacp @ 2020-08-07 20:05:38


复杂度的话因为有排序所以刚好是$n\log n$
by konjacp @ 2020-08-07 20:06:32


哦另外如果不能取$0$的话$s\gets s-n$然后每个数$+1$就好了
by konjacp @ 2020-08-07 20:09:10


| 下一页