社区讨论

如何均匀随机地产生一个单调不降序列

学术版参与者 10已保存回复 71

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
70 条
当前快照
1 份
快照标识符
@m415mbnt
此快照首次捕获于
2024/11/28 18:10
去年
此快照最后确认于
2025/11/05 01:25
4 个月前
查看原帖
rt。
问题:
给定 N,MN,M,如何真正均匀随机(指每种可能的序列的概率相同)出一个长度为 NN 的单调不降序列(所以可以有相同的),每个元素是在 [1,M][1,M] 中的整数。
显然生成所有数字再排序不是正确的,当 N=2N=2 时就有:
  • 如果两个数字 x,yx,y 相同,则概率为 1M2\dfrac{1}{M^2}
  • 如果两个数字 x,yx,y(这是经过排序的生成的序列,满足 x<yx < y) 不同,概率为 2M2\dfrac{2}{M^2}
容易验证概率和为 M×1M2+M(M1)×1M2=1M \times \dfrac{1}{M^2} + M(M-1) \times \dfrac{1}{M^2} = 1
更进一步地,如果我们有一个能够均匀随机地产生某种类型(比如一个类)的随机对象产生器,同时有这种类型的小于号重载(可以比较两个对象,并且性质良好),还有这种类型的等于号重载,给定 NN,如何产生一个长度为 NN 的,对于每个 1i<jN1 \le i < j \le N 都有 aiaja_i \le a_j(这里的 \le 表示重载后的 a<b || a==b)的序列 a1Na_{1 \cdots N}
解答必关。

回复

71 条回复,欢迎继续交流。

正在加载回复...