Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 8 Oct 1996 17:56:32 +1000
From:      Bruce Evans <bde@zeta.org.au>
To:        louie@TransSys.COM, terry@lambert.org
Cc:        ache@nagual.ru, bde@zeta.org.au, current@FreeBSD.ORG, freebsd-hackers@FreeBSD.ORG, joerg_wunsch@uriah.heep.sax.de, wollman@lcs.mit.edu
Subject:   Re: I plan to change random() for -current (was Re: rand() and random())
Message-ID:  <199610080756.RAA27388@godzilla.zeta.org.au>

next in thread | raw e-mail | index | archive | help
>I have to agree with Terry here about "fixing" rand()/srand().  For
>better or worse, there are expections on the implementation of these
>functions in a standard C libarary.  For instance, in a recent
>Internet Draft of a protocol specification for multicast routing
>protocol (draft-ietf-idmr-pim-sm-spec-05.txt):

>>     3.7 Hash Function
>>....
>>        1 For each candidate RP address Ci in the Candidate-RP-
>>             Set, whose Group-prefix covers G, compute a value:
>>             Value(G,M,Ci) =
>>              1103515245 ((1103515245 (G&M)+12345) XOR Ci)+ 12345 mod 2^31

If you want exactly that, use your own routine.  Apparently a quality
hash function isn't required.

>>             In standard C, this corresponds to:
                  ^^^^^^^^^^ the usual (low quality) BSD implementation
		             of the Standard C library functions srand()
			     and rand()
>>
>>           srand(G & M);
>>           srand(rand() ^ Ci);
>>           value = rand();

Bruce



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199610080756.RAA27388>