2013-04-11 9 views
8

W php, w jaki sposób mogę wygenerować liczbę losową zakładając normalną dystrybucję z określoną średnią i standardową dewanacją?Jak mogę wybrać liczbę losową, ale z normalnym rozkładem prawdopodobieństwa w PHP?

+4

To pytanie nie wykazuje żadnych wysiłków badawczych. Ważne jest, aby ** wykonać zadanie domowe **. Powiedz nam, co znalazłeś i dlaczego *** nie spełnia Twoich potrzeb. To pokazuje, że poświęciłeś czas, aby spróbować pomóc sobie, to ratuje nas od powtarzania oczywistych odpowiedzi, a przede wszystkim pomaga ci uzyskać bardziej szczegółową i trafną odpowiedź. [FAQ] (http://stackoverflow.com/questions/how-to-ask). –

+0

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

+2

tylko funkcja rand generuje liczby losowe z równymi prawdopodobieństwami, nie z normalnym rozkładem prawdopodobieństwa – Maggie

Odpowiedz

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

To znacznie bardziej skomplikowane niż moja próba i wymaga więcej procesora. Praca z liczbami całkowitymi nie będzie już możliwa. Co sprawia, że ​​jest lepszy? Czy możesz przynajmniej to wyjaśnić? przetestowałeś to? A przynajmniej nawet używane? – hek2mgl

+1

@ hek2mgl Napisałem rozszerzenie PHP w 'C' a while z powrotem dla przybliżenia normalnej dystrybucji. Użyłem go mocno. Właśnie przekonwertowałem swój kod z 'C' na' PHP' dla tej odpowiedzi. – Paulpro

+0

To nic nie wyjaśnia. Powinieneś ponownie przemyśleć rozszerzenie C, ponieważ może to być mniej obciążające procesor. – hek2mgl

0

Spróbuj użyć funkcji PHP stats_rand_gen_normal. Uważam, że robi to, co szukasz i nie wymaga, aby ponownie wymyślać koła:

generuje pojedynczą losową odbiegają od rozkładu normalnego z średniej, AV, i odchylenie standardowe, sd (sd> = 0)

+0

Ta metoda jest w rzeczywistości zepsuta (co najmniej nie jest możliwe z PHP 5), dlatego właśnie napisałem własne rozszerzenie. – Paulpro

+1

Próbowałem używać tej funkcji, ale okazało się, że wymaga ona pewnego pakietu i nie wiedziałem, jak ją skompilować. Jestem początkującym php, więc jeśli masz link, który może pokazać mi, jak skompilować pakiet w szczegółach, byłbym wdzięczny. Dzięki – Maggie

+0

Jeśli to, co mówi Paulpro, jest prawdą, prawdopodobnie nie będziesz w stanie z niego skorzystać ... Zbadam i zobaczę, czy istnieje sposób na użycie tego w PHP5 + (nie testowałem) –

Powiązane problemy