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.pdfNo 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:
y
i=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 s
i=1 f(s)=-a(donde a es una constante de tu eleccion), cuando s
i=s/2 f(s)=0 y cuando s
i=s f(s)=a y a los numeros s
i tal que s no es 1, s/2 o s asignales el valor (2*a*s
i/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*s
i/s)-a entonces f(s)∈(-a,a) sin necesidad de definir constantes y
f(s)=(2*s
i/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!