Cuello de botella en la generación de números aleatorios: No es tu PRNG
Este artículo utiliza una historia para destacar un problema clave en la optimización de algoritmos de generación de números aleatorios: el cuello de botella puede no ser el PRNG en sí, sino el método de generación de números aleatorios dentro de un rango específico. El autor compara varios métodos para generar números aleatorios dentro de un rango dado, incluyendo el módulo clásico, la multiplicación de punto flotante, la multiplicación de enteros y varios métodos imparciales como el muestreo de rechazo y el enmascaramiento de bits. Los resultados experimentales muestran que el mejor método varía según el PRNG y la escala de datos, pero el método basado en la multiplicación de enteros de Lemire, después de la optimización, tiene un rendimiento excepcional, mejorando significativamente el rendimiento. El artículo también compara el rendimiento de varios PRNG, encontrando que incluso los PRNG más rápidos ofrecen una mejora de rendimiento mucho menor que la optimización del método de generación de rango.