protected function calculateVariation()
{
if ($this->getSeed()) {
mt_srand($this->getSeed());
}
$sum = 0;
$max = array_sum($this->getVariations());
$random = mt_rand(1, $max);
foreach ($this->getVariations() as $variation => $odd) {
$sum += $odd;
if ($random <= $sum) {
$this->variation = $variation;
return;
}
}
}