quantrs2_sim/quantum_reservoir_computing/
quantumreservoircomputer_apply_gate_errors_group.rs1use crate::circuit_interfaces::{
8 CircuitInterface, InterfaceCircuit, InterfaceGate, InterfaceGateType,
9};
10use crate::error::Result;
11use scirs2_core::random::prelude::*;
12
13use super::quantumreservoircomputer_type::QuantumReservoirComputer;
14
15impl QuantumReservoirComputer {
16 pub(super) fn apply_gate_errors(&mut self) -> Result<()> {
18 let error_rate = self.config.noise_level;
19 for qubit in 0..self.config.num_qubits {
20 if thread_rng().random::<f64>() < error_rate {
21 let error_type = thread_rng().random_range(0..3);
22 let gate_type = match error_type {
23 0 => InterfaceGateType::X,
24 1 => InterfaceGateType::PauliY,
25 _ => InterfaceGateType::PauliZ,
26 };
27 self.apply_single_qubit_gate(qubit, gate_type)?;
28 }
29 }
30 Ok(())
31 }
32}