私は Java に翻訳しようとしているので、次のコード スニペットで何が起こっているのかを誰かが説明できるかどうか疑問に思っていますが、私の Perl の知識はわずかです。
sub burble {
my $cw = "%START%";
my $sentence;
my $nw;
my ( $score, $s, $roll );
while ( $cw ne "." ) # while we're not at the end
# of the sentence yet
{
$score = 0;
# get total score to randomise within
foreach $s ( values %{ $dict{$cw} } ) {
$score += $s;
}
# now get a random number within that
$roll = int( rand() * $score );
$score = 0;
foreach $nw ( keys %{ $dict{$cw} } ) {
$score += ${ $dict{$cw} }{$nw};
if ( $score > $roll ) # chosen a word
{
$sentence .= "$nw " unless $nw eq ".";
$cw = $nw;
last;
}
}
}
return $sentence;
}