# toqito.random.random_density_matrix¶

toqito.random.random_density_matrix(dim: int, is_real: bool = False, k_param: list[int] | int = None, distance_metric: str = 'haar') → np.ndarray[source]

Generate a random density matrix.

Generates a random dim-by-dim density matrix distributed according to the Hilbert-Schmidt measure. The matrix is of rank <= k_param distributed according to the distribution distance_metric If is_real = True, then all of its entries will be real. The variable distance_metric must be one of:

• haar (default):
Generate a larger pure state according to the Haar measure and trace out the extra dimensions. Sometimes called the Hilbert-Schmidt measure when k_param = dim.
• bures:
The Bures measure.

Examples

Using toqito, we may generate a random complex-valued $$n$$- dimensional density matrix. For $$d=2$$, this can be accomplished as follows.

>>> from toqito.random import random_density_matrix
>>> complex_dm = random_density_matrix(2)
>>> complex_dm
[[0.34903796+0.j       0.4324904 +0.103298j]
[0.4324904 -0.103298j 0.65096204+0.j      ]]


We can verify that this is in fact a valid density matrix using the is_denisty function from toqito as follows

>>> from toqito.matrix_props import is_density
>>> is_density(complex_dm)
True


We can also generate random density matrices that are real-valued as follows.

>>> from toqito.random import random_density_matrix
>>> real_dm = random_density_matrix(2, is_real=True)
>>> real_dm
[[0.37330805 0.46466224]
[0.46466224 0.62669195]]


Again, verifying that this is a valid density matrix can be done as follows.

>>> from toqito.matrix_props import is_density
>>> is_density(real_dm)
True


By default, the random density operators are constructed using the Haar measure. We can select to generate the random density matrix according to the Bures metric instead as follows.

>>> from toqito.random import random_density_matrix
>>> bures_mat = random_density_matrix(2, distance_metric="bures")
>>> bures_mat
[[0.59937164+0.j         0.45355087-0.18473365j]
[0.45355087+0.18473365j 0.40062836+0.j        ]]


As before, we can verify that this matrix generated is a valid density matrix.

>>> from toqito.matrix_props import is_density
>>> is_density(bures_mat)
True

Parameters: dim – The number of rows (and columns) of the density matrix. is_real – Boolean denoting whether the returned matrix will have all real entries or not. k_param – Default value is equal to dim. distance_metric – The distance metric used to randomly generate the density matrix. This metric is either the Haar measure or the Bures measure. Default value is to use the Haar measure. A dim-by-dim random density matrix.