El algoritmo que Windows XP usaba para elegir tu foto de usuario

What algorithm did Windows XP use to choose your initial user picture?

Windows XP seleccionaba al azar la imagen de perfil inicial entre los archivos de la carpeta Default Pictures. Raymond Chen revela que el proceso usaba RtlRandomEx con GetTickCount() como semilla y un algoritmo de una sola pasada, una variante de reservoir sampling con k=1. Este método evita recorrer dos veces el sistema de archivos y se detiene tras evaluar 100 imágenes para prevenir problemas si la carpeta contiene miles de archivos.

El algoritmo funciona observando que, en una colección de n elementos, el último tiene una probabilidad de 1/n de ser elegido al azar. Si no se elige, entonces hay que seleccionar aleatoriamente entre los primeros n − 1 elementos, lo cual se puede resolver de forma recursiva.
  1. mawadev

    Ese es un caso del que solo me doy cuenta cuando leo blogs como este. Técnicamente podría resolverlo de la misma manera, pero hoy en día tienes tantas tareas sobre la mesa que no piensas en el problema y sus implicaciones en absoluto, y esa conciencia/disciplina se ahoga en el ruido o se desaprende con el tiempo.

    Si alguien me diera solo 2 minutos para esto, porque piensa que es muy simple (como siempre), habría hecho un recuento de archivos de un patrón específico en el directorio y luego elegido un índice aleatorio, una programación muy ingenua y rápida y sucia, sin muestreo en absoluto, solo para evitar discusiones sobre por qué lleva tanto tiempo con personas que no quieren oírlo.

    Esto me recuerda cuando hacía mucho C#, Java, JS, Python en mi vida, llenando mapas de cadenas y objetos hasta que empecé con zig y noté lo caro y complicado que pueden ser las cadenas y las asignaciones de estructuras de datos. Me voló la cabeza cuánta memoria y computación desperdiciamos cuando tratamos de hacer las cosas lo más rápido posible debido a restricciones de presupuesto/tiempo.

  2. lyorig

    Hombre, cada publicación de Raymond Chen sobre las entrañas de Windows es como una pequeña Navidad. Sin embargo, me pregunto si tiene que pedirle permiso a alguien antes de publicar este conocimiento.

  3. EMIRELADERO

    Para los interesados, aquí está el código real del que habla Chen: https://github.com/tongzx/nt5src/blob/daad8a087a4e75422ec96b...

  4. impoppy

    >Raymond ha estado involucrado en la evolución de Windows durante más de 30 años. De vez en cuando aparece en la cuenta de Twitter de Windows Dev Docs para contar historias que no transmiten información útil.

  5. scrumper

    Este es un ejemplo divertido del cambio cognitivo que tienes que emplear cuando empiezas a programar una computadora. Es extremadamente fácil para un humano elegir al azar una cosa de un montón de cosas: extiendes la mano y la agarras, quizás revolviéndolas primero sobre la mesa para barajar el orden. Para una computadora, no hay una analogía directa con eso. Simplemente no pueden hacerlo. Y el proceso humano no se parece ni remotamente al que sigue la computadora: no tenemos que contar los conjuntos e iterar sobre ellos, ni contar los elementos y luego generar un número aleatorio para elegir el enésimo elemento, ni arriesgarnos a elegir un elemento nulo.

  6. cgio

    Los tiempos en que la gente gastaba un ciclo cerebral extra para evitar miles de millones de segundos perdidos.

  7. rietta

    Me encanta el modesto "hace algún tiempo" que enlaza a una publicación de blog de 2004. Raymond lleva mucho tiempo en esto :-)

  8. ape4

    Es un poco extraño que los sistemas de archivos no tengan una llamada que te diga cuántos archivos hay en una carpeta.

Más de este día

2026-09-10