DEMOSTRABLEMENTE JUSTO
La forma de determinar el ganador de un raffle depende de 3 variables:
- Semilla del servidor
- Número total de tickets
- SNúmero individual de cada ticket
Primero, se ordenan todas las compras de los usuarios cronológicamente, luego se genera una lista de tickets. Por ejemplo, si un usuario A compra 1 entrada a las 14:01, un usuario B compra 5 a las 14:03, y usuario C compra 3 a las 14:05, se generaría una lista de tickets así:
Usuario | Ticket # |
---|---|
Usuario A | 1 |
Usuario B | 2 |
Usuario B | 3 |
Usuario B | 4 |
Usuario B | 5 |
Usuario B | 6 |
Usuario C | 7 |
Usuario C | 8 |
Usuario C | 9 |
Con esta lista, para cada ticket se genera un número aleatorio entre 1 y 100.000 usando la semilla del raffle, el número total de tickets, y el número individual de cada ticket:
Usuario | Ticket # | Roll |
---|---|---|
Usuario A | 1 | 70.257 |
Usuario B | 2 | 53.996 |
Usuario B | 3 | 92.611 |
Usuario B | 4 | 57.496 |
Usuario B | 5 | 35.002 |
Usuario B | 6 | 76.366 |
Usuario C | 7 | 20.997 |
Usuario C | 8 | 93.563 |
Usuario C | 9 | 24.399 |
Gana el ticket con el roll más alto. En este caso, el ticket #8 del usuario C sería el ganador. En caso de empate, repetimos el proceso con los tickets que hayan empatado añadiendo :tie:1, :tie:2, etc. al final de la semilla para generar un desempate.
Para los sorteos finalizados antes del día 22 de enero de 2025, el funcionamiento era diferente. Al igual que ahora, se ordenaban las compras de los usuarios cronológicamente, pero en lugar de generar un número aleatorio para cada ticket, se generaba un número entre 1 y el número total de tickets, en este caso se habría generado un número entre 1 y 9. El número de ticket que hubiera coincidido con este número habría sido el ganador.