It's possible for a random number generator to produce duplicate output. 
Statistically speaking, a duplicate (random number collision) is 
guaranteed if you keep generating random numbers and merely wait long 
enough. If you combine a time of day number (which is generally assumed 
monotonically increasing, unless someone does something particularly 
"clever") with a "long" random number then collisions are improbable but 
technically not altogether impossible.

Do you need *guaranteed* uniqueness? If you do, the Db2 suggestion is a 
very good one if you have Db2 or get it. Broadly comparable facilities are 
available in MQ if you want a guarantee of Sysplex-wide uniqueness. (This 
is a well solved problem in z/OS-based middleware.) Or you could check 
each new time+random value against running lists of past time+random 
values where time=time, discarding the prior list when new time > old 
time. This roll-your-own approach takes some effort if you want it to be 
robust.

Yet another approach is that you voluntarily allow and require time to 
elapse before generating the next time+random value. If you wait long 
enough, there's no time collision. But then you probably wouldn't use a 
random add-on but rather a dimensionally "big" sequence string, unless the 
random portion is somehow useful. For example your string could be in the 
format:

A + B + C

where A is the finest grained time of day you can get, B is a unique 
program instance ID (e.g. in a 2-way Sysplex with a maximum of 2 instances 
of the program running, this could be "X" or "Y"), and C is a "long" 
sequence string. While A = A, you simply increment through C. In the 
extraordinarily improbable event you ever get to the end of C (since 
you've made it dimensionally big enough for even Year 8000 computing 
power), you refuse to keep processing and yield even discretionary 
dispatching until A must have incremented. (Which you still verify with an 
A new v. A prior comparison.)

Or, instead of an explicit B, you vary the C list depending on program 
invocation context, which amounts to the same thing.

Lots of options! I don't quite understand the end goal, though, so it's a 
bit difficult to decide which one of these approaches, or some other, is 
the best fit.

- - - - - - - - - -
Timothy Sipples
I.T. Architect Executive
Digital Asset & Other Industry Solutions
IBM Z & LinuxONE
- - - - - - - - - -
E-Mail: sipp...@sg.ibm.com

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to