Cómo elige Namesome

La versión corta: tu navegador elige el nombre con un generador de números aleatorios criptográfico, antes de que la ruleta empiece a moverse. Aquí está la versión larga, y cómo comprobarla.

De dónde viene la aleatoriedad

Cada elección empieza con crypto.getRandomValues, el generador de números aleatorios que tu navegador trae incorporado y que tu sistema operativo alimenta. Es la misma fuente que protege las conexiones, no el atajo aritmético que usan casi todas las animaciones. El nombre se elige en el momento en que presionas Girar; la animación es una forma de mostrarte una decisión que ya está tomada, y por eso nada del gesto — con cuánta fuerza la impulsas, cuánto la sostienes — puede cambiarla.

Los pesos cambian las probabilidades a propósito, y las porciones cambian de ancho con ellos, así lo que la gente ve coincide con lo que hace el sorteo.

Una excepción, dicha sin rodeos: cuando un sorteo de regalos lleva tantas reglas de «no puede tocarle a» que el muestreo aleatorio no encuentra un resultado que las cumpla, Namesome recurre a una solución barajada construida a partir de las propias reglas. Ese resultado es un sorteo válido, pero no uniformemente aleatorio, y es el único lugar del sitio donde esas dos cosas se separan.

Compruébalo por tu cuenta

Ejecuta cincuenta mil giros en este navegador y compara lo que salió con una prueba de chi cuadrado. Las ruletas parejas caen dentro del margen esperado; las ruletas con pesos caen junto a sus pesos. No se envía nada a ningún lado — la auditoría corre en tu máquina.

Auditoría de distribución

Todavía no se ha medido nada. La auditoría hace 100.000 elecciones en este navegador: 50.000 para cada una de las dos pruebas.

La prueba 2 da a las tres entradas los pesos 1, 2 y 3: una porción tres veces más grande sale tres veces más seguido, y eso es lo que miden sus números.

Cómo funciona la auditoría

Cada elección toma 64 bits nuevos de crypto.getRandomValues — el mismo generador que un navegador usa para sus claves —, los convierte en un número en [0, 1) y recorre los pesos de las entradas hasta que cae en una. Nada del gesto, del tiempo ni de la animación toca el resultado: el nombre ya existe antes de que la ruleta se mueva.

Las dos pruebas son pruebas de bondad de ajuste de chi cuadrado de Pearson. El estadístico suma (observado − esperado)² ÷ esperado sobre las entradas, así que un número pequeño significa que los conteos caen donde los pondría una elección pareja. La prueba 1 usa ocho entradas con el mismo peso: 7 grados de libertad, valor crítico 24,322. La prueba 2 usa pesos 1, 2 y 3, de modo que las partes deberían ser un sexto, un tercio y la mitad: 2 grados de libertad, valor crítico 13,816. Los dos valores críticos están tomados en p = 0.001.

En ese umbral, un motor perfectamente sano igual falla más o menos una corrida de cada mil. Una falla significa ejecutarla otra vez; dos fallas seguidas sí son un error real.

Sorteos que cualquiera puede verificar

Cuando alguien necesita una prueba — quién presenta primero, a quién le toca el turno, qué nombre salió del sombrero — un registro del sorteo convierte la elección en algo que una persona desconocida puede repetir. El registro guarda las entradas, los ajustes, la semilla y las huellas, y un botón que recalcula todo delante de ti.

Comprometer y luego revelar

Antes de que el resultado exista, publicamos una huella: el SHA-256 de la semilla secreta, las entradas y el ID del sorteo. El resultado se deriva de esa semilla después, y la semilla se publica junto a él. Como la huella fue pública primero, no pudimos sortear una y otra vez hasta que nos gustara la respuesta — la huella ya no coincidiría.

Compromiso

46cc3578fe29c825a7134c9ba9b5b43d346147d11f2e5264f806f92b943b8b17

Semilla

49114b046bdfc2b0b62c1366dfc097dbb5d2aba0fe251e2c6c8516c4d44696f4

ns-draw-v1, en diez líneas

Las entradas se normalizan y se ordenan, luego se les aplica SHA-256. El orden es una mezcla de Fisher-Yates impulsada por un flujo HMAC-SHA256 con la semilla como clave, y los elegidos son los primeros nombres de ese orden. Las mismas entradas, la misma salida, en cualquier máquina y en cualquier idioma.

// Excerpt of ns-draw-v1. sha256Hex, unhex and next32 are on the record page.
const entries = [...record.entries].map(s=>s.normalize('NFC')).sort();
const entriesHash = await sha256Hex(te.encode(JSON.stringify(entries)));
const commitment = await sha256Hex(te.encode(
  record.seed + '|' + entriesHash + '|' + record.id));
const key = await crypto.subtle.importKey('raw', unhex(record.seed),
  {name:'HMAC', hash:'SHA-256'}, false, ['sign']);
const arr = [...entries];
for (let i = arr.length-1; i > 0; i--){
  const bound = i+1, lim = Math.floor(0x100000000/bound)*bound;
  let r; do { r = await next32(); } while (r >= lim);
  const j = r % bound; [arr[i],arr[j]] = [arr[j],arr[i]];
}
return { entriesHash, commitment, order: arr, winners: arr.slice(0, record.winners) };

Un extracto — las funciones auxiliares que llama, y el botón que vuelve a ejecutarlo todo delante de ti, están en la página del registro del sorteo.

Lo que nunca hacemos

Nunca cobramos por un sorteo. No hay boletos, ni cuotas de participación, ni premios, ni probabilidades en ninguna parte de Namesome, y los términos prohíben usarlo para juegos de azar por dinero. Elige nombres; ese es todo el trabajo.

Ciego al dinero por diseño — aquí no hay nada que apunte al dinero.

Para agentes y programas

La API y el servidor MCP devuelven los mismos registros con las mismas huellas, así que un asistente puede comprobar el sorteo de otro. Cada respuesta lleva el enlace a una página que una persona puede leer.

Leer las notas de la API