生成非连续样本

A.M*_*.M. 13 random matlab

我们如何有效地生成k随机和非连续样本[1,...,N]

非期望的示例(N=10, k=4): 2,3,8,10

这不是一个理想的例子,因为23是连续的.

期望的例子(N=10, k=4): 2,6,8,10

这是一个很好的例子,因为每对样本之间的差异大于 1

Dan*_*iel 15

sort(randperm(N-(k-1),k))+[0:(k-1)]
Run Code Online (Sandbox Code Playgroud)

这个解决方案背后有一个简单的诅咒,如果你对你的问题采取任何排序的解决方案并减去[0:(k-1)],你最终会随机选择一个k数字.N-(k-1)

  • 顺便说一句,在python中:`map(operator.add,sorted(random.sample(range(1,N-k + 2),k)),range(0,k))` (2认同)