Restablecer semilla de generación de números aleatorios/aleatorizados en VB.NET

Así que estoy creando una aplicación donde el usuario puede ingresar una semilla, o se genera una semilla aleatoriamente para ellos. Luego, esta semilla se pasa a la Randomizefunción que llama Rndvarias veces. La intención es que si se usa la misma semilla, ya sea si se genera aleatoriamente o si la ingresa el usuario, la lista de salida de números aleatorios debería ser la misma.

El problema con el que me encontré es que cuando genero aleatoriamente la semilla, esto eliminará el generador de números aleatorios, y no estoy seguro de cómo restablecerlo por completo. Mi código se ve así:

If UserEnteredSeed() Then
    Randomize(userSeed)
Else
    Randomize()
    userSeed = Rnd() + Rnd() ' This part is just a placeholder - but the Rnd function is called several times
End If

Randomize(userSeed)

Debug.Print(Rnd().ToString())

Mi problema es que cuando Elsese llega a la cláusula, el uso de la Rndfunción (según tengo entendido) atravesará la lista de números aleatorios, y luego, cuando Randomizese llama al siguiente con userSeed, la lista cambia pero la posición dentro de la lista no lo hace. Esto cambiará la salida cuando Elseno se alcance la cláusula y Rndno se llame varias veces.

Mi pregunta es, ¿puedo restablecer completamente la generación de números aleatorios para que, independientemente de si el userSeednúmero se ingresa o genera, el mismo userSeedproduce el mismo número aleatorio como salida? O si no, ¿cómo puedo crear efectivamente el mismo comportamiento previsto?

Answer

Llamar a Rnd() con un argumento negativo antes de llamar a Randomize() con un argumento numérico repetirá secuencias de números aleatorios.