| 601 | } |
| 602 | |
| 603 | QMatrix getRandomDensityMatrix(int numQb) { |
| 604 | DEMAND( numQb > 0 ); |
| 605 | |
| 606 | // generate random probabilities to weight random pure states |
| 607 | int dim = 1<<numQb; |
| 608 | vector<qreal> probs = getRandomProbabilities(dim); |
| 609 | |
| 610 | // add random pure states |
| 611 | QMatrix dens = getZeroMatrix(dim); |
| 612 | for (int i=0; i<dim; i++) { |
| 613 | QVector pure = getRandomStateVector(numQb); |
| 614 | dens += probs[i] * getKetBra(pure, pure); |
| 615 | } |
| 616 | |
| 617 | return dens; |
| 618 | } |
| 619 | |
| 620 | QMatrix getPureDensityMatrix(QVector state) { |
| 621 | return getKetBra(state, state); |
no test coverage detected