[R] Simple estimate of a probability by simulation
davidr at rhotrading.com
davidr at rhotrading.com
Wed Aug 20 17:53:09 CEST 2008
I get 5/36 + log(2)/6, not 1/9.
David L. Reiner, PhD
Head Quant
Rho Trading Securities, LLC
-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org]
On Behalf Of Alberto Monteiro
Sent: Wednesday, August 20, 2008 7:56 AM
To: Van Wyk, Jaap; r-help at r-project.org
Subject: Re: [R] Simple estimate of a probability by simulation
Jaap Van Wyk wrote:
>
> I would appreciate any help with the following.
> Problem: Suppose A, B and C are independent U(0,1) random variables.
> What is the probability that A(x^2) + Bx + C has real roots? I have
> done the theoretical work and obtained an answer of 1/9 = 0.1111.
> Now I want to show my students to get this in R with simulation.
> Below are two attemps, both giving the answer to be about 0.26.
>
> Could anybody please help me with providing a more elegant way to do
> this? (I am still learning R and trying to get my students to learn
> it as well. I know there must be a better way to get this.) I must
> be doing something wrong ?
>
Always think that R is vector-oriented, so you should think
in terms of vectors.
A simple solution for your problem would be:
n <- 10000
# n <- 10000? Make n <- 1000000 !
n <- 1000000
a <- runif(n) # a vector of n unifs
b <- runif(n)
c <- runif(n)
delta <- b^2 - 4 * a * c # a vector of deltas
# The answer then is how many deltas are non-negative:
sum(delta > 0) / length(delta)
# Explanation
b^2 is the vector of the squares of b's
a * c does the pointwise product of vectors
delta > 0 is a logical array with TRUE or FALSE
sum(delta > 0) coerces TRUE to 1 and FALSE to 0
length(delta) is the length of delta (n)
Alberto Monteiro
______________________________________________
R-help at r-project.org mailing list
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.
More information about the R-help
mailing list