Función: Función Aleatoria GenéricaVolver

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; siguiente nº aleatorio
  • 0; usar reloj del sistema
  • otro valor; valor fijo
-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…

rand, randint, randgauss