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
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
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
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()
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) ]