Nasıl Gauss dağılımları tarafından yayılan bir 24 saat süre noktaları ayarlayabilirsiniz? 10:00 de zirve için örnek için?
Aşağıdaki kod, belirli bir zamanda merkezli bir Gauss rastgele dağıtılmış (saat olarak, ayrıca bir saat fraksiyonların) süresi oluşturur ve belirli bir standart sapma ile. Rasgele zamanlarda standart sapma birkaç saat, özellikle saat 'sarmak' olabilir: Bu doğru işlenir. Standart sapmalar (kaç gün) çok büyük eğer farklı bir 'sarma' algoritması daha verimli olabilir, ancak dağıtım neyse, bu durumda neredeyse üniforma olacak.
$peak=10; // Peak at 10-o-clock
$stdev=2; // Standard deviation of two hours
$hoursOnClock=24; // 24-hour clock
do // Generate gaussian variable using Box-Muller
{
$u=2.0*mt_rand()/mt_getrandmax()-1.0;
$v=2.0*mt_rand()/mt_getrandmax()-1.0;
$s = $u*$u+$v*$v;
} while ($s > 1);
$gauss=$u*sqrt(-2.0*log($s)/$s);
$gauss = $gauss*$stdev + $peak; // Transform to correct peak and standard deviation
while ($gauss < 0) $gauss+=$hoursOnClock; // Wrap around hours to keep the random time
$result = fmod($gauss,$hoursOnClock); // on the clock
echo $result;
Eğer sorun varsa üreten Gauss dağılımlı rasgele sayı bakmak http://en.wikipedia.org/wiki/Box-Muller_transform
Else Sorunuzu netleştirmek lütfen.