gpt4 book ai didi

perl - Perl 中的随机/随机哈希键

转载 作者:行者123 更新时间:2023-12-04 23:09:46 26 4
gpt4 key购买 nike

我多次运行散列,而没有更改散列的内容。我希望散列每次都以随机顺序迭代(我知道散列的内部顺序是随机的,但我需要更改随机顺序)

我想要的代码如下:

 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;
}
}
}
}

我需要 %Normalisedfithash 的顺序为 for 循环的每次迭代随机更改。我看到一个类似的 question但是我不希望这些值随机更改键,而是希望键保持其关联值但随机更改顺序。

谢谢!

最佳答案

最简单的方法可能是打乱从散列中返回的键列表。 shuffle来自 List::Util 是一个很好的实现。

use strict;
use warnings;

use List::Util 'shuffle';

...

foreach my $Genotype1( shuffle keys %Normalisedfithash ) {
my $Fitness1 = $Normalisedfithash{$Genotype1};
}
shuffle每次都会以不同的顺序打乱列表。

编辑:我应该说它每次都会以随机顺序排列列表。巧合的是,顺序可能与前一次相同。 :)

关于perl - Perl 中的随机/随机哈希键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13014541/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com