package dist;
import shared.DataSet;
import shared.Instance;
import util.ABAGAILArrays;
/**
* A distribution of all of the permutations
* of a set size.
* @author Andrew Guillory gtg008g@mail.gatech.edu
* @version 1.0
*/
public class DiscretePermutationDistribution extends AbstractDistribution {
/**
* The size of the data
*/
private int n;
/**
* The probability
*/
private double p;
/**
* Make a new discrete permutation distribution
* @param n the size of the data
*/
public DiscretePermutationDistribution(int n) {
this.n = n;
p = n;
for (int i = n - 1; i >= 1; i--) {
p *= i;
}
p = 1 / p;
}
/**
* @see dist.Distribution#probabilityOf(shared.Instance)
*/
public double p(Instance i) {
return p;
}
/**
* @see dist.Distribution#generateRandom(shared.Instance)
*/
public Instance sample(Instance ignored) {
double[] d = ABAGAILArrays.dindices(n);
ABAGAILArrays.permute(d);
return new Instance(d);
}
/**
* @see dist.Distribution#generateMostLikely(shared.Instance)
*/
public Instance mode(Instance ignored) {
return sample(ignored);
}
/**
* @see dist.Distribution#estimate(shared.DataSet)
*/
public void estimate(DataSet observations) {
return;
}
}