Cool snippet! Interesting to see that (at least on my Debian box) it takes a few dozen iterations to actually reach middle ground:
perl -Mstrict -Mwarnings -E 'my $WIDTH = 50;
my ( $try, $i, $j ) = (0) x 3;
for ( 1 .. 40 ) {
++$try;
my $rand = `perl -E "say rand()"`;
$rand < .5 ? ++$i : ++$j;
printf qq[%${WIDTH}s : %s\n],
"#" x ( $i * $WIDTH / $try ),
"#" x ( $j * $WIDTH / $try );
}'
| [reply] [Watch: Dir/Any] [d/l] |
Interesting to see that ... it takes a few dozen iterations to actually reach middle ground:
That is the nature of randomness. If it was exactly 50:50, it wouldn't be random.
But the more trials you run, the closer it will tend. This is more evident if you run this version with various different resets:
C:\test>perl
-E"{++$t;$r=`perl -E\"say rand()\"`;$r<.5?++$a:++$b; printf qq[\r%.3f
+: %.3f], $a*100/$t, $b*100/$t; $t>$ARGV[0] and say and $t=$a=$b=0; re
+do}" 10
45.455 : 54.545
27.273 : 72.727
36.364 : 63.636
54.545 : 45.455
72.727 : 27.273
63.636 : 36.364
36.364 : 63.636
45.455 : 54.545
27.273 : 72.727
36.364 : 63.636
72.727 : 27.273
45.455 : 54.545
54.545 : 45.455
63.636 : 36.364
C:\test>perl
-E"{++$t;$r=`perl -E\"say rand()\"`;$r<.5?++$a:++$b; printf qq[\r%.3f
+: %.3f], $a*100/$t, $b*100/$t; $t>$ARGV[0] and say and $t=$a=$b=0; re
+do}" 100
52.475 : 47.525
52.475 : 47.525
52.475 : 47.525
46.535 : 53.465
45.545 : 54.455
51.485 : 48.515
41.584 : 58.416
46.535 : 53.465
42.574 : 57.426
40.594 : 59.406
C:\test>perl
-E"{++$t;$r=`perl -E\"say rand()\"`;$r<.5?++$a:++$b; printf qq[\r%.3f
+: %.3f], $a*100/$t, $b*100/$t; $t>$ARGV[0] and say and $t=$a=$b=0; re
+do}" 1000
49.750 : 50.250
51.349 : 48.651
48.651 : 51.349
53.047 : 46.953
With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
RIP Neil Armstrong
| [reply] [Watch: Dir/Any] [d/l] |