¿Por qué este generador de Python devuelve el mismo valor cada vez?

Aquí está mi generador:

import numpy as np

def fun():
    state = [1, 2]
    for i in range(10):
        for j, var in enumerate(state):
            next_st = np.random.randint(0, 3)
            state[j] = next_st
        yield state

Y aquí está el resultado, cuando lo llamo:

>>> g = fun(); y = [x for x in g]; y
[[2, 0],
 [2, 0],
 [2, 0],
 [2, 0],
 [2, 0],
 [2, 0],
 [2, 0],
 [2, 0],
 [2, 0],
 [2, 0]]

Si ejecuto la declaración nuevamente, obtengo algo diferente a[2, 0] (debido anp.random llamada), pero el mismo valor en todosy.

Respuestas a la pregunta(2)

Su respuesta a la pregunta