pub fn add_random_multi_qubit_gate(number_qubits: usize, seed: u64) -> Operation {
    let mut rng = StdRng::seed_from_u64(seed);
    let qubits: Vec<usize> = (0..number_qubits).collect();
    let gate_type_dist = Uniform::<i64>::from(0..2);
    let new_op: Operation = match gate_type_dist.sample(&mut rng) {
        0 => {
            let theta: f64 = rng.sample(Standard);
            MultiQubitMS::new(qubits, theta.into()).into()
        }
        1 => {
            let theta: f64 = rng.sample(Standard);
            MultiQubitZZ::new(qubits, theta.into()).into()
        }
        _ => {
            let theta: f64 = rng.sample(Standard);
            MultiQubitZZ::new(qubits, theta.into()).into()
        }
    };
    new_op
}
/// Function to add a random multi-qubit-gate operation to the Circuit.
///
/// The qubits argument for the multi-qubit-gates is generated from a sorted list of qubits
/// based on the provided number of qubits.
/// The other arguments for the gate operation, like rotation angle, are distributed randomly.
///
/// # Arguments
///
/// * `number_qubits` - Number of qubits in the circuit.
/// * `seed` - Seed for the random number generator.
///
/// # Returns
///
/// * `Operation` - The constructed random roqoqo Operation.
///
Function to add a random multi-qubit-gate operation to the Circuit.
The qubits argument for the multi-qubit-gates is generated from a sorted list of qubits
based on the provided number of qubits.
The other arguments for the gate operation, like rotation angle, are distributed randomly.
Function to add a random multi - qubit - gate operation to the Circuit . The qubits argument for the multi - qubit - gates is generated from a sorted list of qubits based on the provided number of qubits . The other arguments for the gate operation like rotation angle are distributed randomly .
pub fn add_random_multi_qubit_gate(number_qubits: usize, seed: u64) -> Operation {
    let mut rng = StdRng::seed_from_u64(seed);
    let qubits: Vec<usize> = (0..number_qubits).collect();
    let gate_type_dist = Uniform::<i64>::from(0..2);
    let new_op: Operation = match gate_type_dist.sample(&mut rng) {
        0 => {
            let theta: f64 = rng.sample(Standard);
            MultiQubitMS::new(qubits, theta.into()).into()
        }
        1 => {
            let theta: f64 = rng.sample(Standard);
            MultiQubitZZ::new(qubits, theta.into()).into()
        }
        _ => {
            let theta: f64 = rng.sample(Standard);
            MultiQubitZZ::new(qubits, theta.into()).into()
        }
    };
    new_op
}
pub fn add_random_multi_qubit_gate ( number_qubits : usize , seed : u64 ) -> Operation { let mut rng = StdRng :: seed_from_u64 ( seed ) ; let qubits : Vec < usize > = ( 0 .. number_qubits ) . collect ( ) ; let gate_type_dist = Uniform :: < i64 > :: from ( 0 .. 2 ) ; let new_op : Operation = match gate_type_dist . sample ( & mut rng ) { 0 => { let theta : f64 = rng . sample ( Standard ) ; MultiQubitMS :: new ( qubits , theta . into ( ) ) . into ( ) } 1 => { let theta : f64 = rng . sample ( Standard ) ; MultiQubitZZ :: new ( qubits , theta . into ( ) ) . into ( ) } _ => { let theta : f64 = rng . sample ( Standard ) ; MultiQubitZZ :: new ( qubits , theta . into ( ) ) . into ( ) } } ; new_op }
Function to add a random multi-qubit-gate operation to the Circuit.
Function to add a random multi - qubit - gate operation to the Circuit .
`Operation` - The constructed random roqoqo Operation.
` Operation ` - The constructed random roqoqo Operation .
number_qubits
usize
seed
u64