我已经记录了一些字母在一组字符串中出现的频率,现在我想制作一些具有(大致)相同字母组成的随机字符串.我正在使用以下Perl代码来执行此操作.
my $random_string = "";
while(length($random_string) < $length)
{
my $probabilities =
{
A => 0.2790114613,
B => 0.1880372493,
C => 0.2285100287,
D => 0.3044412607,
};
my $test = 0;
$test += $probabilities->{ A };
if($rand < $test)
{
$sequence .= "A";
next;
}
$test += $probabilities->{ B };
if($rand < $test)
{
$sequence .= "B";
next;
}
$test += $probabilities->{ C };
if($rand < $test)
{
$sequence .= "C";
next;
}
$sequence .= "D";
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法呢?当我不知道要考虑多少封信时,我该如何处理案件?我们可以安全地假设所有字母的概率总和为1.
| 归档时间: |
|
| 查看次数: |
746 次 |
| 最近记录: |