Perl の map 関数について助けが必要です。配列が壊れているようです。
#!/usr/bin/perl
use Math::Trig;
my @Degre = map {rand(360)} (1..2000);
my @step= map {rand(.5)} (1..2000);
my @aa = map {rand(2000)} (1..2000);
my @bb = map {rand(2000)} (1..2000);
for ($i = 0; $i <=100; $i++)
{
my @xx = map {$aa[$_]*(cos($Degre[$_])*(pi/180))}(1..2000);
my @yy = map {$bb[$_]*(cos($Degre[$_])*(pi/180))}(1..2000);
@Degre = map {@Degre[$_] + @step[$_]} (1..2000);
print "@bb[1] @aa[1] @Degre[1] @step[1] \n";
}
今、これの出力は
1146.56471948439 1909.33326800968 329.443529905881 0.117635819122725
1146.56471948439 1909.33326800968 343.482356802257 0.117635819122725
1146.56471948439 1909.33326800968 164.500200570578 0.117635819122725
1146.56471948439 1909.33326800968 252.734665366625 0.117635819122725
1146.56471948439 1909.33326800968 274.983382178209 0.117635819122725
1146.56471948439 1909.33326800968 324.609187610893 0.117635819122725
1146.56471948439 1909.33326800968 261.96207333817 0.117635819122725
1146.56471948439 1909.33326800968 279.442105351764 0.117635819122725
3 番目の列が度数であるため、0.117635 ..... ステップで増加すると予想していたときに、ランダムにジャンプするように見える理由がわかりません。
乾杯
アップデート
確認するために、マップステートメントで次のことを実行しようとしています
for ($x = 0; $x <=2000; $x++)
{
$degre[$x] = $degre[$x] + $step[$i]
}
コードを変更する
for ($i = 0; $i <=100; $i++)
{
my @xx = map {$aa[$_]*(cos($Degre[$_])*(pi/180))}(1..2000);
my @yy = map {$bb[$_]*(cos($Degre[$_])*(pi/180))}(1..2000);
#@Degre = map {$Degre[$_] + $step[$_]} (1..2000);
for ($x = 0; $x <=2000; $x++)
{
$Degre[$x] = $Degre[$x] + $step[$x];
}
次の出力が得られます
738.346205775827 646.171091419262 395.07480695473 0.484472140779317
738.346205775827 646.171091419262 395.559279095509 0.484472140779317
738.346205775827 646.171091419262 396.043751236288 0.484472140779317
738.346205775827 646.171091419262 396.528223377068 0.484472140779317
738.346205775827 646.171091419262 397.012695517847 0.484472140779317
738.346205775827 646.171091419262 397.497167658626 0.484472140779317
738.346205775827 646.171091419262 397.981639799406 0.484472140779317
738.346205775827 646.171091419262 398.466111940185 0.484472140779317
ループを考えるたびに、次数の列がステップ値によって正しくインクリメントされるようになりました。では、なぜ map は同じことをしないのでしょうか。