如何均匀随机地产生一个单调不降序列
  • 板块学术版
  • 楼主LionBlaze
  • 当前回复57
  • 已保存回复58
  • 发布时间2024/11/28 18:09
  • 上次更新2024/11/28 20:20:11
查看原帖
如何均匀随机地产生一个单调不降序列
911054
LionBlaze楼主2024/11/28 18:09

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}

解答必关。

2024/11/28 18:09
加载中...