|
Joel Fritz wrote:
We've been playing with CEERANO to try to construct a list of 13 digit unique numbers in "random" order. It looks like that after 20,000 or so, diminishing returns sets in in a big way. What we're doing is starting with zero as the seed and using whatever gets returned in the seed parm as the next seed. The test program looks at its output file to see if the current random number is in the file. If not, it writes it. Out of curiosity I tried a run of 99,999--off by 1 <g>--just to see what I'd get. 1322 of the numbers occurred 70 times, 29 of them occurred 69 times, and the others occurred once. I guess I'd expect the frequencies to be a little more normally distributed. Looks like using the seed value returned by the function is not a good idea. Does anyone know what's happening here?
If you look at the documentation for ceeran0, you'll see that using the seed value returned by the function for the next iteration is exactly how the seed was intended to be used. The documentations states: "On return, CEERAN0 changes the value of seed so that it may be used as the new seed in the next call." That's the way many pseudo-random number generators are supposed to work. Using the current time is not a good choice for each iteration since the time may not change between iterations, or may change in too predictable a fashion. Clearly, using random numbers is not the best technique to generate "unique" numbers, and you should perhaps look at some better technique. One way to generate unique numbers is to start at 1, and increment for each new number. If you want the numbers to "look" random, then start with some big number, say 293756927, keep incrementing that, but return the number with the digits rearranged in some sytematic manner. Cheers! Hans
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.