Buenas, disculpen que recién responda. En mi trabajo cumplo turnos rotativos y eso dificulta mucho el hacerse una rutina para de disponer de tiempos y la necesidad de descansos se hace mayor.
Dejando de lado las excusas, les cuento que utilicé lenguaje Python para resolver el ejercicio.
Utilizando la PC de mi trabajo (me quedé un rato fuera de mi horario laboral, no vayan a creer que le estoy robando a la empresa, jeje), la cual cuenta con 32GB de RAM, un procesador Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz y Sistema Operativo Windows 10 Pro for Workstations (64 bits), versión 22H2, Compilación 19045.3693; el tiempo insumido para el millón de repeticiones, fue de 1,771 segundos.
En la parte b, el nH calculado fue de 13.680.588 y para su ejecución, insumió 24,33 segundos.
La tasa de ejecuciones por segundo (unas 560 mil) es casi idéntica en ambos casos, por lo que el costo computacional es claramente lineal en N.
Por otra parte, no realicé corridas con N mayores.
Los comentarios que tengo para agregar, es que para calcular la inversa de la normal, utilicé una librería de Python llamada scipy.special (función ndtri), ya que primeramente utilicé otra (que no recuerdo el nombre pero que era más intuitiva en los nombres de funciones y en su uso) pero los tiempos insumidos eran mayores y haciendo un poco de investigación, llegué a que esa librería, bajo cuerdas, usaba esta otra para el cálculo de funciones estadísticas, así que readaptando el código, logré mejores resultados de desempeño.
Por otro lado, para la parte grupal tuvimos que comparar el código con el de mi compañero y resultó casi idéntico, sin embargo el desempeño de uno y otro era muy disímil. Analizando ambos códigos en mayor detalle, concluimos que el uso de la librería numpy impactaba negativamente en el desempeño. El código de mi compañero usaba dicha librería para calcular la distancia euclidiana entre puntos (en el problema de la hiperesfera) y para acumular vectores y calcular su promedio y desviación estándar. En el mío, que utilizaba únicamente operaciones aritméticas estándar para dichos cálculos, el mismo problema se resolvía (en la misma PC) en el órden de 3 veces más rápido.
A su vez, también en la tarea grupal, en cierto momento llegamos a que debíamos correr la solución con una cantidad de repeticiones nh= 184.443.973, y en el script donde se utilizaba numpy, el código no podía ejecutarse por errores de memoria insuficiente, mientras que en el que no usaba dicha librería, se ejecutó sin problemas más allá de la natural demora para su ejecución.
Espero estos comentarios (medio tardíos) y nuestra experiencia les sean útiles a los demás para encarar los problemas siguientes.