Creas un array, metes ahí todos los números personalizados que quieras...
Luego se trata de eleigr al azar un índice entre 0 y el último índice del array.
Si tienes 25 números en el array, entonces los índices van del 0 al 24.
Y Random debe elegir un valor entre 0 y 24...
Finalmente en tu textbox pones el valor que consta en el array en la posición obtenida al azar...
Para forzar una mayor entropía, con cada número obtenido intercambia el par de valores según indiceprevio e índiceactual.
Y si... si quieres que el número cambie por sí solo, usar un timer está bien, pero recuerda que habrá algún momento en que deba estar activo y alguno en que deba ser desactivado (salvo que solo tenga un propósito decorativo), y recuerda que el lapso de tiempo debe ser algo que mantenga el valor el tiempo suficiente para ser visualizado, o si se trata de simular un 'barajado' puede ser algo más rápido, pero que todavía dé tiempo a poder leer valores...
Dim miArrayRnd() As Int32 = New Int32() {2, 20, 50, 69, 13, 3, 72, 96, 44, 31, 58, 85, 22, 12, 94, 57, 36, 7, 5, 39, 92, 83, 64, 18, 74}
Dim IndicePrevio As Int32 ' = 0
Dim IndiceActual As Int32 ' = 0
Private Sub form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Randomize()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim tmp As Int32
IndiceActual = CInt(Int((miArrayRnd.Length - 1) * Rnd()))
TextBox1.Text = miArrayRnd(IndiceActual).ToString
' intercambiar el par de valores:
tmp = miArrayRnd(IndiceActual)
miArrayRnd(IndiceActual) = miArrayRnd(IndicePrevio)
miArrayRnd(IndicePrevio) = tmp
' Recordar el índice previo... en la siguiente llamada.
IndicePrevio = IndiceActual
End Sub