【发布时间】:2013-05-15 09:21:52
【问题描述】:
给定一个长度为 n 的字符串,我将如何(伪)随机采样 m 个大小为 k 的子字符串,使得没有采样子串重叠?我的大部分脚本编写经验都是用 Perl 编写的,但任何通用语言的易于运行的解决方案就足够了。
【问题讨论】:
-
将字符串分成所需长度的样本;可能通过填充数组,然后
my $rnd = $array[int rand @array] -
我想我会考虑到有
n-m*k字符不会 被使用,以及m+1可以进入的空白。选择那些m+1间隙的长度,这样它们加起来正好是n-m*k。 (这样就不需要考虑重叠了。) -
我假设子字符串需要是连续的(否则使用迭代器很容易做到)?
-
@ali_m 是的,子字符串是指原始字符串中的 k 个连续字符的字符串。
-
你为什么要这样做?我不确定我能想到一种算法,它不会偏向选择非常接近字符串开头或结尾的字符,所以它不会是“公平的”
标签: python string perl random sample