Me imagino que el usuario te entrega la cantidad de números que se deben crear, la desviación y el promedio, entendí bien ?
Apostador agrego info 76 minutos y 44 segundos despues...
suponiendo que recibes esos 3 datos, se me ocurre una forma... no se como irá a resultar, pero puedes sacar algunas ideas,
double s, double prom, double n; //desviacion, promedio y tamaño
double[] numeros=new double[n]; //para guardar los numeros
//necesitas conocer las formulas para la desviacion y el promedio, si te fijas en ambas formulas, tienes s, prom, n, y lo único que varía es la sumatoria de los Xi. Es decir que con eso debes trabajar para definir el intervalo donde puedes crear numeros aleatorios. En el caso del promedio, por ejemplo,
n
ΣXi/n=prom
n
=> ΣXi = prom*n
por ejemplo si ya has creado 2 numeros aleatorios z1 y z2, entonces para crear al tercero éste debería ser un numero entre 0 y prom*n - (z1+z2), esto es una restricción para poder alcanzar el promedio prom que se ingresó en pantalla ( no pasarse).
por otro lado, de la fórmula de la desviación, sale otra restricción, que depende de los cuadrados de los numeros que ya tienes.
n
de la formula s^2=(Σ(Xi^2) - n*prom^2)/(n-1)
n
Σ(Xi^2) = raiz(s)*(n-1) + n*prom^2
quiere decir que para crear un nuevo numero, éste al cuadrado debe ser menor que:
raiz(s)*(n-1) + n*prom^2 - Σ(de los numeros ya creados)
esta sería una segunda restricción.
por lo tanto, para crear un nuevo numero aleatorio, que cumpla con las restricciones, este debe estar entre: o y min{restricción1, restricción2}
sigamos....//
double cx=0; // para contar los numeros ya creados
double cx2=0; //para contar los cuadrados de los numeros ya creados
double restriccion1;restriccion2;restriccion;
for(int i=0;i<n-2;++i) //porque n-2?? explicacion abajo del for
{
restriccion1=prom*n - cx;
restriccion2=math.XX(math.XX(s)*(n-1) + n*prom^2 - cx2);//math.XX es porque no me acuerdo del metodo para sacar la raiz, buscalo
restriccion=math.min(restriccion1,restriccion2);
numeros[i]=random(0, restriccion); //aquí implementas el metodo para crear un aleatorio entre 0 y restriccion, que dijiste que sabías hacerlo, y que no es como lo anoté yo.
cx=cx+numeros[i];
cx2=cx2+numeros[i]^2;
}
//el for es hasta n-2 porque fue lo único que se me ocurrió, para al final hacer calzarla muestra con la desviacion y promedio. Por eso dejé espacio para los dos numeros finales. Estos se deben calcular como la intersección de las restricciones de desviacion y promedio, es decir, si estos numeros finales le llamamos w y z, estos deberían cumplir con que :
w+z+cx = n*prom;
y con,
w^2+z^2+cx2^2 = raiz(s)*(n-1) + n*prom^2
una ecuación lineal y la otra cuadratica, un sistema totalmente resolvible, aquí deberían salir la ssoluciones para w y z, pero también es claro que podría dar vacía esa intersección, y eso no puede ser

al resolver este sistema, deberíamos ver cuando tiene solución, seguramante eso depende de cx y cx2, por lo tanto a la hora de poner las restricciones cuando creamos un nuevo numero, deberíamos agregar restricicones.... pero se me alargó mucho, así qeu no lo alcanzo a hacer... pero lo que hay es encontrar cx y cx2 tales que este sistema tenga solución. esa restriccion se traduce en una restriccion para cuando creas un nuevo numero dentro del for.
..otra cosa.. hasta ahora solo hemos pensado en el caso n>2 ...
a ver si alguien lo termina o se le ocurre una forma alternativa.