Source code for toqito.rand.random_ginibre
"""Generates a Ginibre random matrix."""
import numpy as np
[docs]
def random_ginibre(dim_n: int, dim_m: int, seed: int | None = None) -> np.ndarray:
r"""Generate a Ginibre random matrix [@WikiCircLaw].
Generates a random `dim_n`-by-`dim_m` Ginibre matrix.
A *Ginibre random matrix* is a matrix with independent and identically distributed complex standard Gaussian
entries.
Ginibre random matrices are used in the construction of Wishart-random POVMs [@Heinosaari_2020_Random].
Examples:
Generate a random \(2\)-by-\(2\) Ginibre random matrix.
```python exec="1" source="above"
from toqito.rand import random_ginibre
print(random_ginibre(2, 2))
```
It is also possible to pass a seed to this function for reproducibility.
```python exec="1" source="above"
from toqito.rand import random_ginibre
print(random_ginibre(2, 2, seed=42))
```
Args:
dim_n: The number of rows of the Ginibre random matrix.
dim_m: The number of columns of the Ginibre random matrix.
seed: A seed used to instantiate numpy's random number generator.
Returns:
A `dim_n`-by-`dim_m` Ginibre random matrix.
"""
gen = np.random.default_rng(seed=seed)
return (gen.standard_normal((dim_n, dim_m)) + 1j * gen.standard_normal((dim_n, dim_m))) / np.sqrt(2)