Archief - PHP: Normale verdeling

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

BBL

Legacy Member
Weet iemand of er een functie bestaat om een getal volgens een normale verdeling te laten berekenen? Ik zou in deze functie dan een random getal laten genereren, waardoor ik een dergelijke functie nodig heb.

PerfectPC

Legacy Member
en nu in't nederlands?

- een "normale verdeling" is geen wiskundige term
- in een functie een random getal laten berekenen = random generator en die bestaat al

QplQyer

Legacy Member
PerfectPC zei:
en nu in't nederlands?

- een "normale verdeling" is geen wiskundige term
- in een functie een random getal laten berekenen = random generator en die bestaat al
-Een (standaard)normale verdeling is wel een wiskundige (uit de statistiek komende) term.
-Een gewone random generator zal wellicht van een uniforme verdeling uitgaan ipv een normale verdeling.

Maar ik zou het antwoord ook niet weten (schrijf desnoods zelf een functie ervoor?).

killgore

Legacy Member
php heeft maar 2 rand functies: rand en mt_rand

en er aub niet van uit gaan dat iedereen hier zo perfect weet wat een normale verdeling is :p (ik zie volgende maand pas statistiek :p)

joyraider

Legacy Member
denk dat hij 'normaalverdeling' bedoelt :) tijdje geleden nog met wiskunde gezien... enige wat k mij nog herinner is dat dat iets is met een grafiek van een klokvorm, dus bijvoorbeeld bij een enquete;

er wordt gevraagd hoeveel men maandelijks verdiend, en 90% van de ondervraagden zegt 'rond de 1000'. natuurlijk zijn er altijd die meer en minder verdienen, en dan krijg je zo'n grafiek:

.......::::|::::........

een klokvorm dus ;) geen idee wat t met php te maken kan hebben maja

PerfectPC

Legacy Member
ik snap de bedoeling nog altijd niet hoor.
een normaalverdeling is een begrip, geen getal ofzo. het dichtste dat in de buurt komt is een std-deviatie. maar daar hebt ge nog altijd een reeks voor nodig...

PS: joyraider: gij bedoelt een gauss-curve, die gaat idd uit van het gemiddelde van een reeks en een standaardafwijking.

servi

Legacy Member
ik denk dat hij een functie wil die aan de hand van enkele parameters de getalwaarde kan uitrekenen van om het even welke normaalverdeling.

Dus de standaard normaalverdeling gecentreerd rond de Y-as en is de totale oppervlakte onder de curve exact 1, maar via de juiste formules kan je dit voor om het even welke normaalverdeling toepassen (bijv. waar opp. 2,12 )

Als het dat is wat je zoekt, dan ben ik er vrij zeker van dat dit niet bestaat.

QplQyer

Legacy Member
PerfectPC zei:
ik snap de bedoeling nog altijd niet hoor.
een normaalverdeling is een begrip, geen getal ofzo. het dichtste dat in de buurt komt is een std-deviatie. maar daar hebt ge nog altijd een reeks voor nodig...

PS: joyraider: gij bedoelt een gauss-curve, die gaat idd uit van het gemiddelde van een reeks en een standaardafwijking.
Hij zoekt allicht een functie die toevalsveranderlijken genereert (getallen dus) die in plaats van uniform verdeeld (elk met een gelijke kans) standaardnormaal verdeeld zijn (dus de kansen van bepaalde waarden rond het gemiddelde zullen idd hoger liggen).
Dus hij zoekt, denk ik, een functie die random waarden uitspuit in een bepaald interval maar niet met een gelijke kans, dus bv een functie die als je het interval [1,10] opgeeft meer kans heeft om 5,6,4 te genereren dan om 1 of 10 te genereren.

Een standaardverdeling is niet alleen een begrip, het is een begrip met bepaalde distributiefunctie hé.

Als het is wat servi zegt zal het zelf moeten geschreven worden allicht.

BloodSeaker

Legacy Member
Als ge die wiskundige term wilt berekenen

Dan moet ge uw wiskunde boek eens beter doorbladeren, want da is aan de hand van oneindige sommen da da eigenlijk berekend wordt, en wordt meestal benaderd door er een eindige som van te maken (bvb tot x=20 of zo laten gaan)

Da is wel in php dan te coderen als ge die definitie hebt (staat erges in ne wiskunde cursus van unief hier ma da ligt op zolder)
Maar ik vrees dat dat nie meteen een snelle manier gaat zijn om ff random getal te berekenen

killgore

Legacy Member
pfft, work-around (zeker & vast niet perfect wiskundig)
1) random getal laten vinden (uw x-waarde)
2) uw x-waarde in de distributie-functie steken, dat resultaat y noemen
3) maximum van distributie-functie berekenen
4) uw random getal laten herleiden naar iets tussen 0 en maximum, laten we dat z noemen
5) y+z vergelijken met bv. maximum*1.8
6), indien >=, random waarde gevonden, anders doorgaan met dit algoritme

dit is echt niet zo denderend goed en maar op paar secs bed8, ik heb dan ook geen enkele voorkennis van statistiek en het is in het algemeen al moeilijk een functie te schrijven voor randoms.

Ik heb hier 1.8 gekozen als multiplier, dit is wel redelijk hoog en getallen die een lage functiewaarde bereiken zullen dan ook bijna nooit gevonden worden met dit algoritme. Ook zal het algoritme trager gaan als pakweg 1.4 als mutliplier omdat je veel meer zal moeten skippen ;).
Maar nogmaals: dit is traag & allesbehalve perfect!

edit: owja, uw return is wel originele x-waarde he, niet de herleide tussen 0 en max

PerfectPC

Legacy Member
en moest onze brave topic starter nu nog eens een beetje extra uitleg komen geven dan waren we hier niet allemaal in het wilde weg aan het gissen...

guRuh

Legacy Member
zoekt hij niet gewoon een functie die de relatieve frequentietabel min of meer kan vervangen?

dat heeft dan weer iets te maken met de Gausskromme... het woord normaal vind daar zijn oorsprong vandaar dat ik al die rare links leg :)

BBL

Legacy Member
Vooreerst, excuseer voor men late reply. Ik was wel wat te vaag; zijn al wel interessante ideeën gekomen, maar helaas geen bruikbare.

Een normale verdeling is zoals al gezegd een klokfunctie zoals deGauss-curve, moest deze beter bekend zijn.
Op zich is het niet moeilijk om hiervoor waarden te laten berekenen, aangezien het functievoorschrift bekend is (zie http://nl.wikipedia.org/math/c0c62c740549464b8fe767626d4632e1.png waarbij f(x) en x onbekenden zijn)

f(x) stelt hierbij de kans voor dat x voor komt (grafisch: http://www.anu.edu.au/nceph/surfstat/surfstat-home/gifs/normMuX.gif waarbij μ het meest aantal keer voor komt). Men uiteindelijke bedoeling is een willekeurige x te berekenen, rekening houdende met de kans f(x) dat deze voorkomt.

PerfectPC

Legacy Member
aaah, ge wilt dus een getal /x opgeven (het gemiddelde) om daarvan een reeks te produceren die zich gedraagt volgens een normaalverdeling / gauss curve ?

guRuh

Legacy Member
BBL zei:
Vooreerst, excuseer voor men late reply. Ik was wel wat te vaag; zijn al wel interessante ideeën gekomen, maar helaas geen bruikbare.

Een normale verdeling is zoals al gezegd een klokfunctie zoals deGauss-curve, moest deze beter bekend zijn.
Op zich is het niet moeilijk om hiervoor waarden te laten berekenen, aangezien het functievoorschrift bekend is (zie http://nl.wikipedia.org/math/c0c62c740549464b8fe767626d4632e1.png waarbij f(x) en x onbekenden zijn)

f(x) stelt hierbij de kans voor dat x voor komt (grafisch: http://www.anu.edu.au/nceph/surfstat/surfstat-home/gifs/normMuX.gif waarbij μ het meest aantal keer voor komt). Men uiteindelijke bedoeling is een willekeurige x te berekenen, rekening houdende met de kans f(x) dat deze voorkomt.


I was right on :cool:

spijtig genoeg kan ik u niet verder helpen :sad:

BBL

Legacy Member
De bedoeling is een willekeurige waarde x uit die reeks te berekenen (af te ronden op 0 cijfers na de komma) die zich idd gedraagt volgens een opgegeven normaalverdeling (/x en de stdev zijn gekend).

BBL

Legacy Member
guRuh zei:
I was right on :cool:

spijtig genoeg kan ik u niet verder helpen :sad:
No prob ze, desnoods genereer ik gewoon een (groot) aantal getallen met een statistisch pakket en stop ik ze gewoon in een bestandje, zeker niet wiskundig, ook niet correct... maar wel een oplossing.

killgore

Legacy Member
Ik zou toch een systeem opbouwen zoals dat vorige dat ik had gepost, een gewoon random nr. laten creëren (via rand functies die ingebouwd zijn), daar op 1 of andere manier een kanscheck op uitvoeren en dit loopen ;).

Anders moet je naar de basis van rand. nrs en dit is behoorlijk zware code vrees ik :s.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan