The Quantum Exact Simulation Toolkit v4.0.0
Loading...
Searching...
No Matches
random.hpp
1/** @file
2 * @author Tyson Jones
3 *
4 * @defgroup testutilsrandom Random
5 * @ingroup testutils
6 * @brief
7 * Testing utilities which generate random objects
8 * independently of QuEST's internal generators.
9 * @{
10 */
11
12#ifndef RANDOM_HPP
13#define RANDOM_HPP
14
15#include "qvector.hpp"
16#include "qmatrix.hpp"
17#include "macros.hpp"
18#include "linalg.hpp"
19#include "lists.hpp"
20#include "quest/include/quest.h"
21
22#include <vector>
23using std::vector;
24
25#include <tuple>
26using std::tuple;
27
28
29void setRandomTestStateSeeds();
30
31int getRandomInt(int min, int maxExcl);
32qreal getRandomReal(qreal min, qreal maxExcl);
33qreal getRandomPhase();
34qcomp getRandomComplex();
35qcomp getRandomUnitComplex();
36
37listpair getRandomFixedNumCtrlsTargs(int numQubits, int numCtrls, int numTargs);
38listtrio getRandomVariNumCtrlsStatesTargs(int numQubits, int minNumTargs, int maxNumTargsIncl);
39
40qvector getRandomVector(size_t dim);
41qmatrix getRandomMatrix(size_t dim);
42qmatrix getRandomDiagonalMatrix(size_t dim);
43qmatrix getRandomNonSquareMatrix(size_t numRows, size_t numCols);
44
45qvector getRandomStateVector(int numQb);
46qmatrix getRandomDensityMatrix(int numQb);
47qmatrix getRandomPureDensityMatrix(int numQb);
48
49void setToRandomState(qvector& state);
50void setToRandomState(qmatrix& state);
51
52qmatrix getRandomUnitary(int numQb);
53qmatrix getRandomDiagonalUnitary(int numQb);
54qmatrix getRandomDiagonalHermitian(int numQb);
55vector<qmatrix> getRandomKrausMap(int numQb, int numOps);
56
57PauliStr getRandomPauliStr(int numQubits);
58PauliStr getRandomPauliStr(vector<int> targs);
59PauliStr getRandomDiagPauliStr(int numQubits);
60
61vector<int> getRandomInts(int min, int maxExcl, int len);
62vector<int> getRandomOutcomes(int len);
63vector<int> getRandomSubRange(int start, int endExcl, int numElems);
64vector<qreal> getRandomProbabilities(int numProbs);
65
66vector<qvector> getRandomOrthonormalVectors(size_t dim, int numVecs);
67vector<qvector> getRandomOrthonormalStateVectors(int numQb, int numStates);
68
69PauliStrSum createRandomPauliStrSum(int numQubits, int numTerms);
70PauliStrSum createRandomNonHermitianPauliStrSum(int numQubits, int numTerms);
71
72
73#endif // RANDOM_HPP
74
75/** @} (end defgroup) */
qvector getRandomStateVector(int numQb)
Definition random.cpp:296
qcomp getRandomComplex()
Definition random.cpp:107
qmatrix getRandomPureDensityMatrix(int numQb)
Definition random.cpp:326
qmatrix getRandomUnitary(int numQb)
Definition random.cpp:348
qreal getRandomReal(qreal min, qreal maxExcl)
Definition random.cpp:63
qmatrix getRandomDensityMatrix(int numQb)
Definition random.cpp:308
vector< qreal > getRandomProbabilities(int numProbs)
Definition random.cpp:160
vector< qmatrix > getRandomKrausMap(int numQb, int numOps)
Definition random.cpp:405
int getRandomInt(int min, int maxExcl)
Definition random.cpp:90