Thank you, BrowserUk... and I'm sure future explorers will do likewise.
+ + !
| [reply] [d/l] |
Uh ... sorry to be a wet blanket, but it doesn’t help on my system (Strawberry Perl, Windows 8.1, 64-bit):
19:01 >perl -e "srand 42; print sort {4-rand 9} split //, 'ts aroMrhir
+sae C tll!!ym';"
l ttyaMeos arrCsrihm!!l
19:01 >perl -e "use Math::Random::Mt qw[rand srand]; srand 42; print s
+ort {4-rand 9} split //, 'ts aroMrhirsae C tll!!ym';"
l ttyaMeos arrCsrihm!!l
19:01 >perl -v
This is perl 5, version 20, subversion 0 (v5.20.0) built for MSWin32-x
+64-multi-thread
:-(
| [reply] [d/l] |
| [reply] |
l ttyaMeos arrCsrihm!!l
With my perls, the original one-liner works as intended for 5.8.8 up to and including 5.18.0. But with 5.20.0 I get the same as you.
The srand documentation contains this:
However, there are a few situations where programs are likely to
want to call "srand". One is for generating predictable results,
generally for testing or debugging. There, you use
"srand($seed)", with the same $seed each time.
That suggests to me that srand(42) should produce identical results whenever it is called.
I can't find anything in the docs that indicate there have been changes to srand - grepping 5.20.0 perldelta for srand produced no hits.
However, there *is* mention (in perldelta) of changes to rand with 5.20, and I guess that if the rand implementation has changed then the same seed will no longer yield same results.
I do think that the breakage of srand($seed) between 5.20 and earlier perls should have been spelled out in the srand documentation ... probably worth a bug report from someone who cares.
Cheers, Rob | [reply] [d/l] [select] |