| 306 | |
| 307 | |
| 308 | qmatrix getRandomDensityMatrix(int numQb) { |
| 309 | DEMAND( numQb > 0 ); |
| 310 | |
| 311 | // generate random probabilities to weight random pure states |
| 312 | int dim = getPow2(numQb); |
| 313 | vector<qreal> probs = getRandomProbabilities(dim); |
| 314 | |
| 315 | // add random pure states |
| 316 | qmatrix dens = getZeroMatrix(dim); |
| 317 | for (int i=0; i<dim; i++) { |
| 318 | qvector pure = getRandomStateVector(numQb); |
| 319 | dens += probs[i] * getOuterProduct(pure, pure); |
| 320 | } |
| 321 | |
| 322 | return dens; |
| 323 | } |
| 324 | |
| 325 | |
| 326 | qmatrix getRandomPureDensityMatrix(int numQb) { |
no test coverage detected