
# esempio per generare numeri aleatori tali che
# la loro probabilità di accadimento di proporzionale
# al valore stesso (intervallo fra 0 e 1, ma facilmente estendibile)

# (tecnica hit/miss)

n <- 100000

x <- runif(n)   # uniforme fra 0 e 1

# histogramma di prova

hist(x, nc=100)

# ripesiamo con la condizione

# estraiamo y fra 0 e 1

y <- runif(n)

xr <- x[y < x]
hist(xr, nc=100)

# modo alternativo, construendoci prima il vettore di valori logici
# 'hit' i cui elementi valgono TRUE o FALSE a seconda che accettiamo
# (hit) o rifiutiamo (miss)

hit <- y < x
xr <- x[hit]
hist(xr, nc=100)    # stesso risultato

# per contare il numero di eventi accettati:
nr <- length(xr)

# o anche 
nr <- sum(hit)
# (in una somma i valori logici vengono convertiti automaticamente in 1/0)

# Per capire cosa è stato fatto
plot(x, y, pch=19, cex=0.1, asp=1)
points(x[hit], y[hit], pch=19, cex=0.1, col='red')

# stima dell'integrale: 
nr/n
