"Ian Abbott" <[EMAIL PROTECTED]> writes: > On 27 Nov 2001, at 15:16, Hrvoje Niksic wrote: > >> So, does anyone know about the portability of rand()? > > It's in the ANSI/ISO C spec (ISO 9899). It's always been in UNIX > (or at least it's been in there since UNIX 7th Edition), and I > should think it's always been in the MS-DOS compilers, but I don't > have one handy at the moment.
I've now switched to using it. If someone complains we can resurrect the check and the dummy implementations. The draft of ISO 9899 I have even contains such an implementation: static unsigned long int next = 1; int rand(void) // RAND_MAX assumed to be 32767 { next = next * 1103515245 + 12345; return (unsigned int)(next/65536) % 32768; } void srand(unsigned int seed) { next = seed; } > It tends not to be very random in some implementations, but should > be good enough to implement a random wait. Agreed. Besides, I'm using the technique recommended in _Numerical Recipes in C_, as quoted in the Linux rand(3) man page: "If you want to generate a random integer between 1 and 10, you should always do it by using high-order bits, as in j=1+(int) (10.0*rand()/(RAND_MAX+1.0)); and never by anything resembling j=1+(rand() % 10); (which uses lower-order bits)."