Descripción
Devuelve un número pseudoaleatorio en [a,b) a partir de una función de densidad (fd) específica definida en el intervalo [a,b).
La función de densidad debe ser no-negativa en todo el intervalo [a,b).
Aunque una función de densidad debe cumplir ∫∞-∞ fd(x)dx = 1,
genrand escalará automáticamente la función de densidad para valores distintos de 1.
genrand aproxima los valores de la función cuantilhttps://es.wikipedia.org/wiki/Funci%C3%B3n_cuantil mediante integrales numéricas, por lo que esta función puede ser bastante LENTA, según el margen de error especificado.
Cadena de entrada
genrand
Cadena de salida
genrand
Uso
genrand(<fd>,<varname>,<min>,<max>[,<error>[,<semilla>]])
Parámetros | |||
---|---|---|---|
# | Parámetro | Descripción | Valor por defecto |
1 | fd | Función de densidad | |
2 | varname | Variable de la que depende la función de densidad | |
3 | min | Extremo inferior del intervalo (INCLUIDO) | |
4 | max | Extremo superior del intervalo (EXCLUIDO) | |
5 | error | Margen de error al aproximar la función cuantil
(reducir este margen puede disminuir considerablemente el rendimiento) |
max - min1000 |
6 | semilla |
|
-1 |
Ejemplos
genrand(1-x,x,0,1) valores más probables cercanos a 0 y disminuyendo linealmente hasta 1
RealDoble: 0.111328125
genrand(sin(x),x,0,pi) valores más probables cercanos a π/2 y menos en 0 y π
RealDoble: 1.5953400194010667
genrand(sqr(x),x,-1,1) valores más probables cercanos a -1 y 1 y menos a 0
RealDoble: -0.9765625
genrand(sqrt(x),x,0,1,1e-4,65)
RealDoble: 0.80712890625
genrand(sqrt(x),x,0,1,1e-4,65)
RealDoble: 0.80712890625
genrand(sqrt(x),x,0,1,1e-5,65)
RealDoble: 0.8071441650390625
eval(dic('media',media(data),'desviacion',desv(data)),data,sucesion(genrand(normal(x,10,2),x,0,20),_,1,1000))
Diccionario: {'media'=9.914375, 'desviacion'=2.0923328518696587}
Desde / Última modificación
v0.4.5
Véase también…