Generando números aleatorios uniformes en Lua

Estoy trabajando en la programación de una cadena de Markov en Lua, y un elemento de esto requiere que genere números aleatorios de manera uniforme. Aquí hay un ejemplo simplificado para ilustrar mi pregunta:

example = function(x)
    local r = math.random(1,10)
    print(r)
    return x[r]
end

exampleArray = {"a","b","c","d","e","f","g","h","i","j"}

print(example(exampleArray))

Mi problema es que cuando vuelvo a ejecutar este programa varias veces (mashF5) se genera el mismo número aleatorio exacto, lo que hace que la función de ejemplo seleccione exactamente el mismo elemento de la matriz. Sin embargo, si incluyo muchas llamadas a la función de ejemplo dentro del programa individual repitiendo la línea de impresión al final muchas veces obtengo resultados aleatorios adecuados.

Esta no es mi intención, ya que un generador de texto pseudoaleatorio de Markov adecuado debería poder ejecutar el mismo programa con las mismas entradas varias veces y generar texto pseudoaleatorio diferente cada vez. He intentado restablecer la semilla usandomath.randomseed(os.time()) y esto hace que la distribución de números aleatorios ya no sea uniforme. Mi objetivo es poder volver a ejecutar el programa anterior y recibir un número seleccionado al azar cada vez.

Respuestas a la pregunta(3)

Su respuesta a la pregunta