【发布时间】:2015-07-01 11:38:53
【问题描述】:
我有一个要求,我有字母“ACGT”,我需要创建一个大约 20,000 个字符的字符串。此字符串应包含 100 多次出现的模式“CCGT”。大多数情况下,生成的字符串包含大约 20-30 个实例。
int N = 20000;
std::string alphabet("ACGT");
std::string str;
str.reserve(N);
for (int index = 0; index < N; index++)
{
str += alphabet[rand() % (alphabet.length())];
}
如何调整代码以使模式更频繁地出现?
编辑 - 有没有办法改变字母表,即 - 'A'、'C'、'G'、'T'、'CCGT' 作为字母表中的字符?
谢谢。
【问题讨论】:
-
每
N / 4 / 100迭代,插入特殊序列,同时跳过index中的四个字符? -
问题似乎是
rand,我建议看these alternatives。 -
@Jefffrey 我认为 OP 想要权衡随机性以比另一个更频繁地生成一个特殊序列,这与重复完全不同,所以我投票重新打开。
-
你怎么能有多个子串的概率?我想你的意思是“发生”。如果必须至少有100个,它怎么可能是随机的
-
@Skizz 是的,对不起,我就是这个意思