Close
    Search Search

    Maipulación de generación de números aleatorios

    Maipulación de generación de números aleatorios



    Contenido

    Manipulación de generación de números aleatorios (RNG)

    La manipulación de RNG es una gran parte de la manipulación del mundo y del jugador y usa interacciones para manipular la posibilidad de que ocurra un evento aleatorio.

    Antes de saltar

    Si no está familiarizado con el código de Minecraft, se sugiere que se informe sobre los conceptos básicos de la mecánica de Minecraft.


    Una lista de enlaces útiles:

    • Trozos
    • Redstone
    • Bloquear actualizaciones (WIP)
    • Garrapatas aleatorias (WIP)
    • Granjas y aldeas de hierro (WIP)
    • Mecánica de aparición (WIP)
    • Clima (WIP)
    • Entidades de mosaico (WIP)

    También hay un video tutorial de Xcom6000, que profundiza en el tema [1]

    RNG en el código

    Antes de comenzar a manipular el RNG, primero debemos echar un vistazo al código.


    El siguiente código es un pseudocódigo y NO tiene licencia de Microsoft inc.

    Cada acción aleatoria del juego se basa en un único generador de números pseudoaleatorios. El generador tiene una función de reinicio y una "función de avance", que se llama siempre que se requiere un número aleatorio.

    Comienza con

    rand = new Random ();

    Esto establece una función aleatoria

    Luego, si el juego solicita un nuevo número aleatorio, llama a esto:


    número = rand.nextInt ();

    Esto generará un número aleatorio, cambiando a uno nuevo basado en el anterior.


    Normalmente, dado que la salida se basa en la salida anterior, esto tendría la máxima forma de seguridad, ya que es la misma forma en que el navegador web establece una conexión segura a través de HTTPS a este servidor. Esto, sin embargo, no es el caso.

    Para solucionar este problema, Mojang podría usar

    number = rand.nextInt (lastNumber)

    Ingeniería inversa del RNG

    Dado que sabemos que el RNG consiste en esta cadena inquebrantable de generaciones aleatorias, ¿cómo lo rompemos?

    Normalmente sería así:

    rand = new Random (); -> número = rand.nextInt () ... seguido de más nextInt ... -> número = rand.nextInt ()


    Y en una parte de la cadena, "número" se usaría para generar algo como cuántas piedras rojas deberían caer de un mineral.

    Esto normalmente sería muy seguro, pero como hay una función de guardado automático, la aleatoriedad se restablece para cada número dado de ticks.




    Añade un comentario de Maipulación de generación de números aleatorios
    ¡Comentario enviado con éxito! Lo revisaremos en las próximas horas.