# toqito.random.random_povm¶

toqito.random.random_povm(dim: int, num_inputs: int, num_outputs: int) → numpy.ndarray[source]

Generate random positive operator valued measurements (POVMs) [WIKPOVM].

Examples

We can generate a set of dim-by-dim POVMs consisting of a specific dimension along with a given number of measurement inputs and measurement outputs. As an example, we can construct a random set of $$2$$-by-$$2$$ POVMs of dimension with $$2$$ inputs and $$2$$ outputs.

>>> from toqito.random import random_povm
>>> import numpy as np
>>>
>>> dim, num_inputs, num_outputs = 2, 2, 2
>>> povms = random_povm(dim, num_inputs, num_outputs)
>>> povms
[[[[ 0.40313832+0.j,  0.59686168+0.j],
[ 0.91134633+0.j,  0.08865367+0.j]],
[[-0.27285707+0.j,  0.27285707+0.j],
[-0.12086852+0.j,  0.12086852+0.j]]],
[[[-0.27285707+0.j,  0.27285707+0.j],
[-0.12086852+0.j,  0.12086852+0.j]],
[[ 0.452533  +0.j,  0.547467  +0.j],
[ 0.34692158+0.j,  0.65307842+0.j]]]]


We can verify that this constitutes a valid set of POVM elements as checking that these operators all sum to the identity operator.

>>> np.round(povms[:, :, 0, 0] + povms[:, :, 0, 1])
[[1.+0.j, 0.+0.j],
[0.+0.j, 1.+0.j]]


References

 [WIKPOVM] Wikipedia: POVM https://en.wikipedia.org/wiki/POVM
Parameters: dim – The dimensions of the measurements. num_inputs – The number of inputs for the measurement. num_outputs – The number of outputs for the measurement. A set of dim-by-dim POVMs of shape (dim, dim, num_inputs, num_outputs).