Skip to content
Prev 371534 / 398506 Next

Random Variable Generation

Once you have assigned the variable, it does not change unless you change it. If you want to draw random numbers repeatedly, put the code into a function:

rnd <- function() {.35 * (runif(1, min=.81, max=1.03) + runif(1, min=1.06, max=1.17) + runif(1, min=-.26, max=1.38)) + 
   .30 * (runif(1, min=.36, max=.98) + runif(1, min=.76, max=.93) + runif(1, min=.52, max=1.03)) + 
   .20 * (runif(1, min=.36, max=.75) + runif(1, min=.1, max=.67) + runif(1, min=.9, max=.96)) + 
   .15 * (runif(1, min=.03, max=.20) + runif(1, min=.27, max=.51) + runif(1, min=.49, max=.55)) + 
   .40 * (runif(1, min=.33, max=.39) + runif(1, min=.84, max=1.35)) + 
   .35 * (runif(1, min=.16, max=.58) + runif(1, min=.05, max=1.29)) + 
   .25 * (runif(1, min=.21, max=.52) + runif(1, min=.20, max=.68)) + 
   .50 * (runif(1, min=1.26, max=1.38))
}

Now every time you access the function, you will get a new random number:
[1] 4.036111
[1] 3.88048
[1] 3.984268
[1] 3.808441
[1] 4.219925

----------------------------------------
David L Carlson
Department of Anthropology
Texas A&M University
College Station, TX 77843-4352



-----Original Message-----
From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of Grant Beanblossom
Sent: Monday, September 25, 2017 9:21 AM
To: r-help at r-project.org
Subject: [R] Random Variable Generation

I am attempting to write a code that will generate a win probability for a hockey team. To do this, I have a code built that will generate a number of random variables between two standard deviations, and then weight them and add them together. However, when I attempt to assign this code to a variable, any time I use the variable, it will always give me the same numbers instead of being random every time. Is there a way I can do this so that it is random every time?


Here is the code I am currently using: .35*(runif(1, min=.81, max=1.03)+runif(1, min=1.06, max=1.17)+runif(1, min=-.26, max=1.38))+.3*(runif(1, min=.36, max=.98)+runif(1, min=.76, max=.93)+runif(1, min=.52, max=1.03))+.2*(runif(1, min=.36, max=.75)+runif(1, min=.1, max=.67)+runif(1, min=.9, max=.96))+.15*(runif(1, min=.03, max=.2)+runif(1, min=.27, max=.51)+runif(1, min=.49, max=.55))+.4*(runif(1, min=.33, max=.39)+runif(1, min=.84, max=1.35))+.35*(runif(1, min=.16, max=.58)+runif(1, min=.05, max=1.29))+.25*(runif(1, min=.21, max=.52)+runif(1, min=.20, max=.68))+.5*(runif(1, min=1.26, max=1.38)).


The reason I want to assign it to a variable is because I want to run this code 1000 times and then get a mean value for it, which I believe might be easier if there's a variable assigned to it. However, if there is an easier way to do that, that could work as well.



______________________________________________
R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Message-ID: <444ec238566047c485df626eef465b1a@exch-2p-mbx-w2.ads.tamu.edu>
In-Reply-To: <DM5PR14MB172325B8E9F925F354A8119CCC7A0@DM5PR14MB1723.namprd14.prod.outlook.com>