Date: Fri, 16 May 2003 17:09:07 +0000 Reply-To: sashole@bellsouth.net Sender: "SAS(r) Discussion" From: Paul Dorfman Subject: Re: Generate Random Number??? Comments: To: tim19972003@YAHOO.COM Content-Type: text/plain; format=flowed >From: Tim Corn > >Hello, > >I want to generate an unique random number for each observation of a sas >dataset. And the >range of the random number should be 1~10,000. How can I >do this? I tried using ranuni >function, but the numbers are less than 1. >Any suggetion? Thank in advance for your valuable >advice! Tim, Since you file cannot have more than 10,000 observations (else the random numbers in the [1:10000] range could not be unique), it is simplest to permute natural numbers from 1 to 10000 using a sort by another random variable, as Andy and others offered to do. Now there have been array solutions by Harry and Daniel. However, as Howard pointed out, they require a massive number of retrials, especially as the process moves ot the end of file. A usual technique of avoiding this when sampling without replacement is to select from the population of decreasing size, where the element just selected is swapped with the top unused element: 114 data a ; 115 do var = 1 to 10000 ; output ; end ; 116 run ; NOTE: The data set WORK.A has 10000 observations and 1 variables. NOTE: DATA statement used (Total process time): 117 data r ; 118 array nat ( 1 : 10000 ) _temporary_ ; 119 if _n_ = 1 then do _n_ = 1 to n ; 120 nat (_n_) = _n_ ; 121 end ; 122 set a nobs = n ; 123 _n_ = ceil ( ranuni(1) * n ) ; 124 random = nat (_n_) ; 125 nat (_n_) = nat (n) ; 126 n +- 1 ; 127 run ; NOTE: There were 10000 observations read from the data set WORK.A. NOTE: The data set WORK.R has 10000 observations and 2 variables. Kind regards, ----------------------------- Paul M. Dorfman Jacksonville, FL ----------------------------- _________________________________________________________________ Help STOP SPAM with the new MSN 8 and get 2 months FREE* http://join.msn.com/?page=features/junkmail

Back to: Top of message | Previous page | Main SAS-L page