def test_get_measurements_representing_distribution_randomly_samples_leftover_bitstrings_when_probabilities_equal( self, ): random.seed(RNDSEED) bitstring_distribution = BitstringDistribution({"00": 0.5, "11": 0.5}) number_of_samples = 51 max_number_of_trials = 10 got_different_measurements = False previous_measurements = Measurements.get_measurements_representing_distribution( bitstring_distribution, number_of_samples) while not got_different_measurements: measurements = Measurements.get_measurements_representing_distribution( bitstring_distribution, number_of_samples) assert measurements.get_counts() == { "00": 25, "11": 26, } or measurements.get_counts() == { "00": 26, "11": 25 } if measurements.get_counts() != previous_measurements.get_counts(): got_different_measurements = True max_number_of_trials -= 1 if max_number_of_trials == 0: break assert got_different_measurements
def test_get_measurements_representing_distribution_doesnt_raise( self, bitstring_distribution): number_of_samples = 100 max_number_of_trials = 100 for _ in range(max_number_of_trials): _ = Measurements.get_measurements_representing_distribution( bitstring_distribution, number_of_samples)
def test_get_measurements_representing_distribution_gives_exactly_right_counts( self, bitstring_distribution): number_of_samples = 10000 measurements = Measurements.get_measurements_representing_distribution( bitstring_distribution, number_of_samples) counts = measurements.get_counts() for bitstring, probability in bitstring_distribution.distribution_dict.items( ): assert probability * number_of_samples == counts[bitstring]
def test_get_measurements_representing_distribution_correctly_samples_leftover_bitstrings( self, bitstring_distribution, number_of_samples, expected_counts): random.seed(RNDSEED) measurements = Measurements.get_measurements_representing_distribution( bitstring_distribution, number_of_samples) assert measurements.get_counts() == expected_counts
def test_get_measurements_representing_distribution_returns_right_number_of_samples( self, bitstring_distribution, number_of_samples): measurements = Measurements.get_measurements_representing_distribution( bitstring_distribution, number_of_samples) assert len(measurements.bitstrings) == number_of_samples