Q:

How do I create a matrix of non-repeating random numbers with numpy, while having a range between these random numbers? 

This line of code already create a 3x3 matrix populated with random numbers between 0 and 8, but some of them are duplicated.  How to stop this? 
initStateRandom = np.random.randint(9, size=(3,3))

A:

You can use choice function from np.random, see the documentation.  
You can either pass in an int for the range or any ndarray. 
import numpy as np

r_array = np.random.choice(9, size=(3, 3), replace=False)  # int
r_array = np.random.choice(np.arange(10, 100), size=(3, 3), replace=False)  # ndarray

