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