2013-04-11 18 views
8

php'de, belirli bir ortalama ve standart sapma ile normal dağılımı varsayarak nasıl rasgele bir sayı oluşturabilirim?Rastgele bir sayıyı nasıl seçebilirim ama PHP’de normal bir olasılık dağılımı var mı?

+4

Bu soru herhangi bir araştırma çalışması göstermemektedir. Ödevini yapmak ** önemlidir. Ne bulduğunu söyle ve neden *** neden ihtiyaçlarınızı karşılamadı? Bu, kendinize yardım etmeye çalışmak için zaman ayırdığınızın, açık cevapları yinelemekten kurtardığımızı ve en önemlisi daha spesifik ve alakalı bir yanıt almanıza yardımcı olduğunu gösterir. [SSS] (http://stackoverflow.com/questions/how-to-ask). –

+0

http://php.net/manual/en/function.rand.php – vikingmaster

+2

rand işlevi, yalnızca normal olasılık dağılımı ile değil, eşit olasılıklarla rastgele sayılar üretir – Maggie

cevap

10
function nrand($mean, $sd){ 
    $x = mt_rand()/mt_getrandmax(); 
    $y = mt_rand()/mt_getrandmax(); 
    return sqrt(-2*log($x))*cos(2*pi()*$y)*$sd + $mean; 
} 
+0

başarmaya çalıştığınız şeyleri açıklayın. Bu çok daha karmaşık bir işlemdir ve benim denemem daha fazla CPU alır. Ayrıca tamsayılarla çalışmak artık mümkün olmayacaktır. Onu daha iyi yapan nedir? En azından açıklayabilir misin? test ettin mi? Ya da en azından kullanılmış? – hek2mgl

+1

@ hek2mgl Normal bir dağılıma yaklaşmak için bir süre önce C 'ye bir PHP uzantısı yazdım. Onu çok kullandım. Bu cevab için kodumu 'C''den' PHP''ye dönüştürdüm. – Paulpro

+0

Bu hiçbir şeyi açıklamıyor. C uzantınızı tekrar düşünmelisiniz, çünkü daha az CPU tüketen – hek2mgl

0

PHP'nin stats_rand_gen_normal işlevini kullanmayı deneyin. (

ortalama, av olan bir normal dağılım tek bir rasgele sapma gösterir oluşturur ve standart sapma, SD: Ben aradığınız ve tekerleği yeniden icat gerektirmez yapar inanıyoruz sd> = 0)

+0

Bu yöntem aslında kırılmış (en azından PHP 5 ile uyumsuz), çünkü kendi uzantımı ilk önce yazmamın nedeni budur. – Paulpro

+1

Bu işlevi kullanmayı denedim, ancak belirli bir paket gerektirdiğini ve bunu nasıl derleyeceğimi bilmiyordum. Ben bir php acemi, bu yüzden paketin detaylarını nasıl derleyeceğimi gösteren bir bağlantınız varsa, bunu takdir ediyorum. Teşekkürler – Maggie

+0

Paulpro'nun söylediği doğru ise, bunu kullanamayacaksınız. Bunu, PHP5 + 'da kullanmanın bir yolu olup olmadığını araştıracağım ve inceleyeceğim (test etmedim) –

İlgili konular