I was looking at random.c when I've seen that ruby use drand48() when it's
available. In my documentation of drand48() (debian 2.1) I've :
The srand48(), seed48() and lcong48() functions are ini tialization functions, one of which should be called
before using drand48(), lrand48() or mrand49(). The func tions erand48(), nrand48() and jrand48() do not require an
initialization function to be called first.
If I read it correctly a call to srand48() must be made before any call
to drand48().
Apparently in random.c, ruby never check if the initialization function
was called. Can this be a problem for the random generator ?
It's really easy to forget a call to srand(). For example this script make
a call to rand() and it's transparent for the user.
pigeon% cat b.rb
#!/usr/bin/ruby
require 'cgi/session'
CGI::Session.new(CGI.new)
pigeon%
Guy Decoux