in reply to Random number generator

I think you could improve the efficiency of this module a little. Your constructor creates a hash but then doesn't store anything in it. Might I suggest replacing this line:

return bless {}, shift;

with this:

return bless \undef, shift;

I'm also wondering if maybe the motivation for this module is related to the posting date :-)

Update: Yes, I know if you tried that in real life you'd get a 'Modification of a read-only value attempted' error - some people are taking this far too seriously :-)

Replies are listed 'Best First'.
Re: Re: Random number generator
by BrowserUk (Patriarch) on Apr 01, 2003 at 08:52 UTC

    That a really neat idea.

    As \undef always returns the same value regardless of how many times you call it within a given script, that will effectively turn the module into a singleton. This has the very desirable side-effect of ensuring that the random sequence isn't messed by calling multiple instances. It neatly removes the need to serialise the access.


    Examine what is said, not who speaks.
    1) When a distinguished but elderly scientist states that something is possible, he is almost certainly right. When he states that something is impossible, he is very probably wrong.
    2) The only way of discovering the limits of the possible is to venture a little way past them into the impossible
    3) Any sufficiently advanced technology is indistinguishable from magic.
    Arthur C. Clarke.
      It also removes the only reason why you'd want to use an OO wrapper around random: the ability to subclass it, and have parts of the program use a different random function. If you turn it into a singleton, you might as well just use rand directly.

      Abigail

        No! Really?

        ;^)


        Examine what is said, not who speaks.
        1) When a distinguished but elderly scientist states that something is possible, he is almost certainly right. When he states that something is impossible, he is very probably wrong.
        2) The only way of discovering the limits of the possible is to venture a little way past them into the impossible
        3) Any sufficiently advanced technology is indistinguishable from magic.
        Arthur C. Clarke.
Re: Re: Random number generator
by bart (Canon) on Apr 01, 2003 at 15:29 UTC
    Your constructor creates a hash but then doesn't store anything in it.
    A really useful object oriented random module would have each object have their own, independent, pseudo-random generator. Instead, they all share and use the underlying common one that's built into Perl.

    But then, writing a module because it then no longer needs anything but perl... There's a flaw in that logic, but I can't quite put my finger on it...

      There's a flaw allright.. but it's not in the logic. It's in the date ;)


      He who asks will be a fool for five minutes, but he who doesn't ask will remain a fool for life.

      Chady | http://chady.net/