Я записал, как часто некоторые буквы встречаются в наборе строк, и теперь я хочу создать несколько случайных строк, которые имеют (приблизительно) одинаковый состав букв.Для этого я использую следующий код 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";
}
Есть ли лучший способ сделать это?Как я могу обрабатывать случаи, когда я не знаю, сколько букв нужно рассмотреть?Можно смело предположить, что сумма вероятностей для всех букв равна 1.