Random Variable Generation

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Random Variable Generation

15gbeanblossom
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.


        [[alternative HTML version deleted]]

______________________________________________
[hidden email] 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.
Reply | Threaded
Open this post in threaded view
|

Re: Random Variable Generation

David Carlson
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:

> rnd()
[1] 4.036111
> rnd()
[1] 3.88048
> rnd()
[1] 3.984268
> rnd()
[1] 3.808441
> rnd()
[1] 4.219925

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



-----Original Message-----
From: R-help [mailto:[hidden email]] On Behalf Of Grant Beanblossom
Sent: Monday, September 25, 2017 9:21 AM
To: [hidden email]
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.


        [[alternative HTML version deleted]]

______________________________________________
[hidden email] 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.

______________________________________________
[hidden email] 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.