def sample(self, size=100, random_state=None): """ Draw a permutation uniformly at random and record the descents i.e. indices where :math:`\\sigma(i+1) < \\sigma(i)` and something else... :param size: size of the permutation i.e. degree :math:`N` of :math:`\\mathfrak{S}_N`. :type size: int .. seealso:: - :cite:`Kam18`, Sec ?? .. todo:: ask @kammmoun to complete the docsting and Section in see also """ rng = check_random_state(random_state) self.size = size sigma = uniform_permutation(self.size + 1, random_state=rng) X = sigma[:-1] > sigma[1:] # Record the descents in permutation Y = rng.binomial(n=2, p=self.x_0, size=self.size + 1) != 1 descent = [ i for i in range(self.size) if (~Y[i] and Y[i + 1]) or (~Y[i] and ~Y[i + 1] and X[i]) ] self.list_of_samples.append(descent)
def sample(self): """ Sample from the Poissonized Plancherel measure. """ N = np.random.poisson(self.theta) sigma = uniform_permutation(N) P, _ = RSK(sigma) # young_diag = [len(row) for row in P] young_diag = np.fromiter(map(len, P), dtype=int) self.list_of_young_diag.append(young_diag) # sampl = [len(row) - i + 0.5 for i, row in enumerate(P, start=1)] sampl = young_diag - np.arange(0.5, young_diag.size) self.list_of_samples.append(sampl.tolist())
def sample(self, size=100): """ Draw a permutation :math:`\sigma \in \mathfrak{S}_N` uniformly at random and record the descents i.e. :math:`\{ i ~;~ \sigma_i > \sigma_{i+1} \}`. :param size: size of the permutation i.e. degree :math:`N` of :math:`\mathfrak{S}_N`. :type size: int """ self.size = size sigma = uniform_permutation(self.size) descent = 1 + np.where(sigma[:-1] > sigma[1:])[0] self.list_of_samples.append(descent.tolist())
def sample(self, size=100, random_state=None): """ Draw a permutation :math:`\\sigma \\in \\mathfrak{S}_N` uniformly at random and record the descents i.e. :math:`\\{ i ~;~ \\sigma_i > \\sigma_{i+1} \\}`. :param size: size of the permutation i.e. degree :math:`N` of :math:`\\mathfrak{S}_N`. :type size: int """ rng = check_random_state(random_state) self.size = size sigma = uniform_permutation(self.size, random_state=rng) descent = 1 + np.where(sigma[:-1] > sigma[1:])[0] self.list_of_samples.append(descent.tolist())
def sample(self, random_state=None): """ Sample from the Poissonized Plancherel measure. :param random_state: :type random_state: None, np.random, int, np.random.RandomState """ rng = check_random_state(random_state) N = rng.poisson(self.theta) sigma = uniform_permutation(N, random_state=rng) P, _ = RSK(sigma) # young_diag = [len(row) for row in P] young_diag = np.fromiter(map(len, P), dtype=int) self.list_of_young_diag.append(young_diag) # sampl = [len(row) - i + 0.5 for i, row in enumerate(P, start=1)] sampl = young_diag - np.arange(0.5, young_diag.size) self.list_of_samples.append(sampl.tolist())
def test_uniform_permutation_sampler(self): """ """ samples = [uniform_permutation(self.N) for _ in range(self.nb_samples)] self.assertTrue(self.uniformity_adequation(samples))