sprintf("%08X", rand(0xFFFFFFFF))
algunas personas mencionaron la ventanas del límite del rand con el MAX-Valor de rand (0x7FFF) o rand (32768) decimal, lo haría superar este cambio con el binario-operador < < '
# overcomes the windows-rand()-only-works-with-max-15bit-(32767)-limitation:
# needed 8*4==32bit random-number:
# first get the 15 high-significant bits shift them 17bits to the left,
# then the next 15bits shifted 2 bits to the left,
# then the last 2 bits with no shifting:
printf('%08X', (
(rand(0x8000)<<17) + (rand(0x8000)<<2) + rand(0b100))
);
pero considero esto en como académico, porque es un código realmente incómodo que es difícil de entender.
No utilizaría esto en el código de la vida real, solo si la velocidad es máxima.
Pero quizás es la solución más rápida y está demostrando un esquema para superar la limitación de la función rand() en Windows ...
Golf: 'perl -e'print [0..9, A..F ] -> [rand 16] para 1..8'' – daxim
¿Por qué downvoting? Necesito aprender programación. ¿Para qué sirve stackoverflow si no es este tipo de preguntas? – unixman83
No he votado tu publicación. Sin embargo, en general, descartar cualquier módulo de CPAN no se considera favorablemente. Además, se espera que haga un esfuerzo para llegar a una solución propia, y pida ayuda con eso en lugar de esperar que otros le den soluciones enlatadas. –