ハッシュの内容を変更せずに、ハッシュを何度も実行します。毎回ランダムな順序でハッシュを反復処理したい (ハッシュの内部順序がランダムであることはわかっているが、そのランダムな順序を変更する必要がある)
これが必要なコードは次のとおりです。
for (my $i=1; $i<=$PopulationsizeA;$i++){
my $P1 = rand;
my $total=0;
my $Parent1='Parent1';
my $P1A;
while ((my $Genotype1, my $Fitness1)=each (%Normalisedfithash)){
$P1A=$P1-$total;
if ($Parent1 eq 'Parent1'){
if ($P1A<=$Fitness1){
$Parent1=$Genotype1;
$P1Tallyhash{$Genotype1}+=1;
}
else{
$total+=$Fitness1;
}
}
}
}
for ループの反復ごとにランダムに変更するには、%Normalizedfithash の順序が必要です。同様の質問を見ましたが、値でキーをランダムに変更するのではなく、キーに関連付けられた値を保持し、順序をランダムに変更する必要があります。
ありがとう!