package cc.mallet.cluster.neighbor_evaluator;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import cc.mallet.util.Randoms;
/**
* Randomly scores {@link Neighbor}s.
*
* @author "Aron Culotta" <culotta@degas.cs.umass.edu>
* @version 1.0
* @since 1.0
* @see NeighborEvaluator
*/
public class RandomEvaluator implements NeighborEvaluator, Serializable {
Randoms random;
public RandomEvaluator (Randoms random) {
this.random = random;
}
/**
*
* @param neighbor
* @return A higher score indicates that the modified Clustering is preferred.
*/
public double evaluate (Neighbor neighbor) {
return random.nextUniform(0, 1);
}
/**
*
* @param neighbors
* @return One score per neighbor. A higher score indicates that the
* modified Clustering is preferred.
*
*/
public double[] evaluate (Neighbor[] neighbors) {
double[] scores = new double[neighbors.length];
for (int i = 0; i < neighbors.length; i++)
scores[i] = evaluate(neighbors[i]);
return scores;
}
/**
* Reset the state of the evaluator.
*/
public void reset () {}
// SERIALIZATION
private static final long serialVersionUID = 1;
private static final int CURRENT_SERIAL_VERSION = 1;
private void writeObject (ObjectOutputStream out) throws IOException {
out.defaultWriteObject ();
out.writeInt (CURRENT_SERIAL_VERSION);
}
private void readObject (ObjectInputStream in) throws IOException, ClassNotFoundException {
in.defaultReadObject ();
int version = in.readInt ();
}
}