| 188 | |
| 189 | |
| 190 | listtrio getRandomVariNumCtrlsStatesTargs(int numQubits, int minNumTargs, int maxNumTargsIncl) { |
| 191 | DEMAND( minNumTargs <= maxNumTargsIncl ); |
| 192 | DEMAND( maxNumTargsIncl <= numQubits ); |
| 193 | |
| 194 | int numTargs = getRandomInt(minNumTargs, maxNumTargsIncl+1); |
| 195 | |
| 196 | // numCtrls in [0, remainingNumQb] |
| 197 | int minNumCtrls = 0; |
| 198 | int maxNumCtrls = numQubits - numTargs; |
| 199 | int numCtrls = getRandomInt(minNumCtrls, maxNumCtrls+1); |
| 200 | |
| 201 | // distribute qubits randomly |
| 202 | auto [ctrls,targs] = getRandomFixedNumCtrlsTargs(numQubits, numCtrls, numTargs); |
| 203 | vector<int> states = getRandomInts(0, 2, numCtrls); |
| 204 | |
| 205 | return tuple{ctrls,states,targs}; |
| 206 | } |
| 207 | |
| 208 | |
| 209 |
no test coverage detected