Agreed. What I was thinking, but didn't say explicitly was that one would
need a large range of values; and that to get rid of the decimals, one could
then multiply by some large multiple of 10 before truncating or rounding.
Something like this, for example:
dataset close all.
* Generate a file with lots of cases.
LOOP case=1 TO 10000.
END INPUT PROGRAM.
* Compute a random ID number with a large range, and truncate.
compute id = trunc(rv.uniform(1, 10**10)).
* Use the NU function in AGGREGATE to obtain the
* number of cases for each unique ID number.
* If there are no duplicate IDs, the frequency
* table should show only a value of 1 with the
* frequency count being the number of cases in
* the file.
I've run this a few times, and have not yet to see any duplicate IDs.
Rick Oliver wrote:
> Using this method, the unique IDs will contain decimals. If you truncate
> or round the values, they may no longer be unique, unless the specified
> range of values is considerably larger than the number of cases.
> Bruce Weaver <email@example.com>
> 09/27/2010 02:34 PM
> Re: generating random (not consecutive) identification numbers
> Sent by:
> "SPSSX(r) Discussion" <SPSSX-L@LISTSERV.UGA.EDU>
> Debbie Hahs-Vaughn wrote:
>> I have used COMPUTE ID=$CASENUM to generate consecutive identification
>> numbers. However how can I generate identification numbers that are not
>> consecutive but just purely random? I am trying to avoid having numbers
>> that are only one digit difference in the ID so that there is less room
>> error in what we are trying to do. Thanks!
> Instead of $casenum, use one of the random variable functions, such as
> RV.UNIFORM. From the Help:
> RV.UNIFORM. RV.UNIFORM(min, max). Numeric. Returns a random value from a
> uniform distribution with specified minimum and maximum. See also the
> UNIFORM function.
> If you want to obtain the same IDs every time you run the syntax, set the
> value of the seed first (via the SET command). Here's the description of
> the seed from the Help:
> "Initialization value for MC random number generator. The value must be a
> positive integer that is less than 2,000,000,000 or the keyword RANDOM,
> which randomly sets the initialization value. The default is 2,000,000."
> And finally, assuming you have one row per ID, you'll want to follow up
> with a check for duplicate IDs. It's not very likely, but could happen.
> Bruce Weaver
> "When all else fails, RTFM."
> NOTE: My Hotmail account is not monitored regularly.
> To send me an e-mail, please use the address shown above.
> View this message in context:
> Sent from the SPSSX Discussion mailing list archive at Nabble.com.
> To manage your subscription to SPSSX-L, send a message to
> LISTSERV@LISTSERV.UGA.EDU (not to SPSSX-L), with no body text except the
> command. To leave the list, send the command
> SIGNOFF SPSSX-L
> For a list of commands to manage subscriptions, send the command
> INFO REFCARD
"When all else fails, RTFM."
NOTE: My Hotmail account is not monitored regularly.
To send me an e-mail, please use the address shown above.
View this message in context: http://spssx-discussion.1045642.n5.nabble.com/generating-random-not-consecutive-identification-numbers-tp2855693p2855887.html
Sent from the SPSSX Discussion mailing list archive at Nabble.com.
To manage your subscription to SPSSX-L, send a message to
LISTSERV@LISTSERV.UGA.EDU (not to SPSSX-L), with no body text except the
command. To leave the list, send the command
For a list of commands to manage subscriptions, send the command