Problema de matemáticas y estadísticas.

Iniciado por APOKLIPTICO, 30 Enero 2011, 22:30 PM

0 Miembros y 2 Visitantes están viendo este tema.

Nork

Si divides la formula entre la media (mean) y le sumas lo que sea para que te quede centrada donde quieras? Así como idea rápida, cómo la ves?
C' Est La Vie

APOKLIPTICO

Nop, creo que no nos estamos entendiendo, la fórmula sólo muestra cómo debería verse la distribución del PRNG, la salida del prng que es una fórmula modular: x(n+1) = (x(n) * a + k) mod m, devuelve números pseudoaleatorios dependiendo del número semilla.
La idea es modificar la fórmula del PRNG, para que los valores que devuelva, tengan una distribución aproximada a la de la fórmula de la distribución.
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.

flony

#12
hola amigo como estas.....si mal no recuerdo....para pasar datos de una muestra uniforme y "normalizarla" se devia usar la funcion "T-studend" aca te dejo un enlace...pero mas alla de lo dificil que parece....en la practica solo debes calcular la varianza, media de la muestra y el resto es cambiar las letritas por los numeros que te da ojo usar la media q corresponde hay media para intervalos y para puntos
http://es.wikipedia.org/wiki/Distribuci%C3%B3n_t_de_Student
editado
traduccion al castellaño de la utilizacion de t  :laugh: :laugh: :laugh:
**grado de libertad=>cantidad de datos conocidos (media y varianza poblacionales no de una muestra)
**desviación típica de los datos S=>la conocida varianza de la muestra se le saca la raiz cuadrada
**intervalo de confianza => intervalo donde caeria la media (cambiar datos obtenidos previamente)
**media = x media +- t (alfa/2) multiplicado por (S/(raíz cuadradada de n) => en la parte mas menos o sea lo sumas y lo restas osea te da dos resultados el dato t lo sacas de la tabla calculando si tenes la media grado de libertad menos uno si no tenes ni la media ni la varianza (lo mas general) grado de libertad menos dos
este enlace esta mejor explicado http://es.wikibooks.org/wiki/Tablas_estad%C3%ADsticas/Distribuci%C3%B3n_t_de_Student
editado2
ojala no sea muy chino lo que explique  :xD
si un problema no tiene solucion entonces no es un problema...es algo inevitable

NYU

ya que me invocaron, si aun no lo has podido resolver con lo que te dijo flony

De lo que te entendi buscas basicamente que los valores extremales de la funcion esten aproximadamente en el centro(maximos) de la grafica y en sus extremos(minimos)

estuve pensando en una solucion general pero sin saber la cantidad de numeros seudoaleatorios a generar no se me ocurrio nada para hacerlo directamente quiza si alla pero no se me ocurrio como al menos por ahora.

Si estas interesado en sacar una solucion general revisate el capitulo 2 de esto: http://etd.lib.fsu.edu/theses/available/etd-10312005-131627/unrestricted/DissertationWenboHu.pdf

No lo he leido muy a fondo pero puede ser que ahi te de una idea de como hacerlo.

Con unas cuantas restricciones si se me ocurrio una idea que quiza te pueda servir, eso si puede ser que requieran mas calculos que la funcion aleatoria misma, pero eso ya seria cosa de optimizarlas

Ahora si suponemos que:
yi=numero seudoaleatorio i
f(y)=funcion seudoaleatoria= s

La idea, tomando como valido lo siguiente:

La cantidad de numeros seudoaleatorios se conoce o se puede calcular directamente, con esto me refiero a que tu le dices al programa genera "s" (donde s pertenece a los naturales union el 0) numeros seudoaleatorios

Asignate cuando si=1 f(s)=-a(donde a es una constante de tu eleccion), cuando si=s/2 f(s)=0 y cuando si=s f(s)=a y a los numeros si tal que s no es 1, s/2 o s asignales el valor (2*a*si/s)-a claro que para simplificar se puede elegir 1 de constante a y para mejor presentacion se puede crear la funcion sin asignar los 3 valores iniciarles, pero al menos esa sirve para normalizar el intervalo, lo que hace basicamente es mandar

si s=1....n
f(s)∈[-a,a]

claro que para simplificar

si s=1....n
f(s)=(2*a*si/s)-a  entonces f(s)∈(-a,a) sin necesidad de definir constantes  y
f(s)=(2*si/s)-1 entonces f(s)∈(-1,1)

el punto de esto es mandar s=1....n en un intervalo,

ya mandado ahora solo necesitas una funcion gaussiana, claro que la distribucion normal estandar te puede servir, la constante 1/(2 raiz de pi) lo que hace es hacer que el maximo sea 1 entonces si usas 255(1/(2 raiz de pi)) la multiplicas por 255 la que mencionaste igual puede servir ya es cosa de que la elijas tu

supongo que no te causaria nada de problemas usar la funcion normal estandar o una similar a el nuevo dominio de f(s) asi que no tiene caso que lo explique, pero si acaso solo se trata de valuar f(s) en la funcion que tu elijas

y bueno ahora que ya calculaste f(s) y le aplicaste tu funcion tienes una grafica gausianna de exactamente s elementos y como s tu funcion generadora de numeros seudo aleatorios al aplicarla obtienes lo que buscas

Como notas, si siempre es la misma cantidad de elementos s, la mayoria de lo que escribi no es necesario xD y si la cantiadad de numeros seudoaleatorios a generar es desconocida por ti y por el programa probablemente al menos por este metodo no se si tenga una solucion pero calcularlo mas complicado ya que al no saber la cantidad de elementos totales no se puede asignar una funcion que lo mande al dominio correcto con eficacia de 100% se puede adivinar y con metodos probabilisticos si se puede mejorar mucho esa aproximacion dependiendo de lo que se conoce de la cantidad a generar

Bueno espero que te sirva de algo, saludos!