# Re: st: RE: generating random numbers from a specified list

 From "Sergiy Radyakin" To statalist@hsphsun2.harvard.edu Subject Re: st: RE: generating random numbers from a specified list Date Fri, 15 Aug 2008 12:38:21 -0400

```program  randgen, sortpreserve
syntax anything, list(string)
tempvar rnd
generate `rnd'=uniform()
sort `rnd'
egen `anything'=fill(`list' `list')
end

Use it like this:

randgen testvar, list(10000 10010 10020)

(Note that this will guarantee you that you will have equal number of
observations (or 1 less) in each Kreis). This is different from gen
Kreis=F(uniform()), because in theory uniform() may evaluate to a
single value for all your observations, but with a very very very
small probability. The program above however, randomizes order of
observations, then assigns the pattern, then restores the order.

Hope this helps.

Regards,

On 8/15/08, Martin Weiss <martin.weiss@uni-tuebingen.de> wrote:
> The problem is not entirely clear to me, but sounds like a case for nested
> -cond- statements as in
>
> ********
> clear*
> set obs 10000
> g x=cond(runiform()<0.3, 10000, cond(runiform()<0.6, 10010,
> cond(runiform()<0.9,10020, 10030)))
> *******
>
> where x is drawn from (10000,10010,10020,10030) and you can specify the
> probabilities for the runiform() function as you please...
>
> HTH
> Martin
>
> -----Original Message-----
> From: owner-statalist@hsphsun2.harvard.edu
> [mailto:owner-statalist@hsphsun2.harvard.edu] On Behalf Of Jochen Späth
> Sent: Friday, August 15, 2008 5:21 PM
> To: statalist@hsphsun2.harvard.edu
> Subject: st: generating random numbers from a specified list
>
> Dear statalisters,
>
> trying to build up a new dataset which is (almost) entirely random I'm
> confronted with the following problem: How can I tell Stata to generate a
> variable by randomly picking  numbers from a (previously) specified list?
> Here's a minimal example of what I want to do:
>
>
> Data right looks like follows:
>
> firm    year  az_ges  az_ges_vz
> 1000129 1975    15      11
> 1000129 1976    14      11
> 1000129 1977    8       6
> 1000129 1978    26      20
>
> 1000530 1993    12      9
> 1000530 1994    29      22
> 1000530 1995    26      20
> 1000530 1996    14      11
> 1000530 1997    18      14
>
> and so on, where firm is the cross section identifier and year the time
> variable. Note that data ist organised in long format.
> Now, I'd like to add a variable which contains for each firm a number picked
> at random from a specified list, f.i. list=(10000,10005,10010, and so on).
> This "random" number should be the same for firms across years. The list
> exists already, albeit in a separate data file that can't be merged with the
> data set at hand because it lacks the identifiers betnr and year.
>
> Any suggestions?
>
> Thanks,
>
> Jochen
>
> ----------------------------------------------------------------------------
> ---------------
>
> Jochen Späth
> Dipl.-Volkswirt
> Institut für Angewandte Wirtschaftsforschung (IAW) Tübingen
> Ob dem Himmelreich 1
> 72074 Tübingen
> Tel.: +49-(0)7071-9896-14
> Fax: +49-(0)7071-9896-99
> EMail: jochen.spaeth@iaw.edu
> IAW-Homepage: www.iaw.edu
>
> ----------------------------------------------------------------------------
> ---------------
>
>
>
> *
> *   For searches and help try:
> *   http://www.stata.com/help.cgi?search
> *   http://www.stata.com/support/statalist/faq
> *   http://www.ats.ucla.edu/stat/stata/
>
>
> *
> *   For searches and help try:
> *   http://www.stata.com/help.cgi?search
> *   http://www.stata.com/support/statalist/faq
> *   http://www.ats.ucla.edu/stat/stata/
>

*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/
```