[Date Prev][Date Next][Thread Prev][Thread Next]
[Search]
[Date Index]
[Thread Index]
Re: [FWP] Shufflebug
>>>>> "Amir" == Amir Karger <karger@fermi2.chem.yale.edu> writes:
Amir> I know nothing about randomness.
Good, because this is pseudorandomness. :)
Amir> So the questions:
Amir> (1) do you agree that this problem exists?
Yes. srand() has only 2^32 input values (I think).
Amir> (2) do you agree with the fix?
Amir> It seems clear that always doing 5 shuffles gives you exactly the same
Amir> number of permutations as doing 1 shuffle.
Yes.
Amir> However, I can't work out whether
Amir> randomly doing between 5 & 10 random shuffles would multiply the number
Amir> of possible decks by 6 (10-5+1), or give you much more randomness.
Neither. With only 2^32 starting points for srand(), there's no
sequence of steps that can give you more. Your only option is to get
*more* random bits from somewhere outside rand(), by reseeding between
shuffles with something like Math::TrulyRandom.
Note that even the Fisher-Yates shuffle that uses a pure rand()
solution will not generate fair decks. You need to re-seed roughly
every 32/6 calls to rand (right Abigail?).
Maybe there should be a version of rand() that "knows" when the
entropy has been used up, and calls Math::TrulyRandom or Crypt::Random
to reset.
--
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
<merlyn@stonehenge.com> <URL:http://www.stonehenge.com/merlyn/>
Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!
==== Want to unsubscribe from Fun With Perl? Well, if you insist...
==== Send email to <fwp-request@technofile.org> with message _body_
==== unsubscribe