package com.spbsu.exp.modelexp.managers;
import com.spbsu.commons.func.Factory;
import com.spbsu.commons.random.FastRandom;
import com.spbsu.exp.modelexp.Experiment;
import com.spbsu.exp.modelexp.Query;
/**
* User: solar
* Date: 03.04.15
* Time: 17:51
*/
public class WizardManager implements Factory<Experiment[]> {
private final FastRandom rng;
private int expCount = 0;
public WizardManager(FastRandom rng) {
this.rng = rng;
}
@Override
public Experiment[] create() {
final double expMean = rng.nextGaussian() * 5 - 1;
return new Experiment[]{new Experiment() {
long count = 0;
public String id = "" + expCount++;
@Override
public double work(Query q) {
q.properties();
count++;
return rng.nextGaussian() + expMean;
}
@Override
public boolean relevant(Query q) {
return true;
}
@Override
public double realScore() {
return expMean;
}
@Override
public String toString() {
return "SERP: " + id + ", " + expMean;
}
}};
}
}