示例#1
0
 def _uniform_sample_indices_and_probabilities(self, n):
     indices = list(
         sample_n_k(len(self.data), max(0, n - len(self.data_inf))))
     probabilities = [1 / len(self)] * len(indices)
     while len(indices) < n:
         i = len(self.data)
         e = self._pop_random_data_inf()
         self.data.append(e)
         del self.priority_tree[i]
         indices.append(i)
         probabilities.append(None)
     return indices, probabilities
示例#2
0
    def uniform_sample(self, n, remove):
        assert n >= 0
        ixs = list(sample_n_k(self.length, n))
        vals = []
        if n > 0:
            for ix in ixs:
                val = self._write(ix, 0.0)
                vals.append(val)

        if not remove:
            for ix, val in zip(ixs, vals):
                self._write(ix, val)

        return ixs, vals
示例#3
0
 def _uniform_sample_indices_and_probabilities(self, n):
     indices = list(sample_n_k(
         len(self.data), n))
     probabilities = [1 / len(self)] * len(indices)
     return indices, probabilities
示例#4
0
 def sample(self, k):
     return [self[i] for i in sample_n_k(len(self), k)]
 def test_slow(self):
     self.samples = [sample_n_k(self.n, self.k) for _ in range(100000)]
     self.subtest_total_counts()
     self.subtest_order_counts()
 def test_fast(self):
     self.samples = [sample_n_k(self.n, self.k) for _ in range(200)]
     self.subtest_constraints()
示例#7
0
 def sample(self, k):
     nf = len(self._queue_front)
     return [
         self._queue_front[i] if i < nf else self._queue_back[i - nf]
         for i in sample_n_k(len(self), k)
     ]