[php] Kansberekening opnieuw!

Pagina: 1
Acties:
  • 125 views sinds 30-01-2008

  • RSD
  • Registratie: Maart 2001
  • Laatst online: 08-02-2017
Janoz, dat van die random etc dat wist ik allemaal al, daar vroeg ik dus ook niet om. Beter lezen voortaan a.u.b!

Datgene wat ik vroeg ging over kansberekening. Nu heb ik op unioversitair nivo al het een en ander gehad over kansberekeningen, zoals normale verdeling, poisson verdeling etc...

Het probleem waar ik meezit kan ik oplossen door een hele grote database te maken met 2 kolommen 1 kolom voor de id's en de andere kolom met de prijzen, deze prijzen komen meerdere keren voor om zo de kans te bepal en voor de prijs. Een voorbeeldje. Als ik een database heb met 1000 records. Als ik hiernu 900x een 1 in doe en 100x een 2 is de kans op een 1 9/10 en de kansop 2 1/10. Om dit verder uit te breiden en de kans op bijv een prijs van 1000 op 1/10000000 te laten uitkomen kom ik op een ontzettend grote database uit. Mijn vraag is nu, kan dit niet makkelijker. Nu kan ik wel een random getal tussen 1 en 1000 laten trekken, de kans op elke getal is dan 1/1000 maar dit is niet wat ik bedoel ik wil het dus zo hebben:

prijs | kans
1 | 1/10
20 | 1/100
2000 | 1/100000
10000 | 1/10000000

Hoe krijg ik dit voor elkander? Dit moet trouwens allemaal in 1 trekking gebeuren. Dus bij elke trekking maak ik kans op bovengenoemde prijzen met bovengenoemde kansen. Hier zal ongetwijfeld de random functie voor gebruikt moeten worden...

  • Bigfoot
  • Registratie: Augustus 2000
  • Laatst online: 30-08 12:37
Voor een kans op 1 op 1 miljoen kun je werken met twee 3 cijferige random getallen nemen en die dan alfanumeriek aan elkaar plakken, dan heb je een 6 cijferig random getal.

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02-2025

SchizoDuckie

Kwaak

Op vrijdag 19 april 2002 09:09 schreef Bigfoot het volgende:
Voor een kans op 1 op 1 miljoen kun je werken met twee 3 cijferige random getallen nemen en die dan alfanumeriek aan elkaar plakken, dan heb je een 6 cijferig random getal.
zucht. :'(

LEZEN voor je post!!!

Het gaat hem er niet om een random string te fix0ren, maar het gaat hem erom een KANSBEREKENING te doen.

[example]
(weet je wel, gokken, casinos enzo. mensen die denken dat ze er rijk mee kunnen worden. zón kansberekening.)

Stop uploading passwords to Github!


  • vinnux
  • Registratie: Maart 2001
  • Niet online
Op vrijdag 19 april 2002 09:03 schreef RSD het volgende:
prijs | kans
1 | 1/10
20 | 1/100
2000 | 1/100000
10000 | 1/10000000
Je trekt een willekeurig getal tussen de 1 en de 1 miljoen.
Aan elke prijs verbind je een range.
Helaas zul je met jouw verdeling merken dat er ook mensen geen prijs hebben, maar dat is de bedoeling neem ik aan.
In 1 -(1/10 + 1/100 + 1/100.000 + 1/1.000.000 )= +/- 88.9% van de gevallen hebben mensen geen prijs.

Je kunt dus aan een aantal getallen een prijswaarde toe.
Bijvoorbeeld :
getal 1 - 100.000 = 10 prijs
getal 100.000 - 110.000 = 20 prijs
etc.

In dit geval beteknt et ook dat bij één getal maar één prijs hoort.

  • RickN
  • Registratie: December 2001
  • Laatst online: 14-06-2025
Ik was iets later dan vgouw :'( , maar het kan geen kwaad als iets 2x goed uitgelegd wordt....

Ik zou het kleinste gemene veelvoud van de quotienten van je kansen nemen, dit getal noem ik ff KGV. Deel de range [0..KGV) nu op in partities op zo'n manier dat dat kans op een bepaalde prijs gelijk is aan de kans dat een random getal in een bepaalde partitie valt b.v.:

In dit geval is KGV 10000000. De partities worden nu:

[0..1000000) die de kans op prijs 1 representeerd.
[1000000..1100000) die de kans op prijs 20 representeerd.
[1100000..1100100) die de kans op prijs 2000 representeerd.
[1100100..1100101) die de kans op prijs 10000 representeerd.
[1100101..10000000) is nu de kans op geen prijs.

trek nu random een getal tussen 0 en KGV-1 en je weet welke prijs erbij hoort.

He who knows only his own side of the case knows little of that.


  • Limhes
  • Registratie: Oktober 2001
  • Laatst online: 19-08 19:06
Zoiets:
code:
1
2
3
4
5
6
7
8
9
10
11
$getal = rand();
if ($getal <= 1 && $getal >= 0.9999)
{
  // kans van 1-.9999=.00001 (dus kleine kans)
}
elseif ($getal < .9999 && $getal >= 0.4)
{
  // kans van .9999-.4=.5999 (dus grote kans)
}

etc.

edit:
RickN's oplossing is in principe dezelfde.. sorry

  • RickN
  • Registratie: December 2001
  • Laatst online: 14-06-2025
Op vrijdag 19 april 2002 10:20 schreef Limhes het volgende:
Zoiets:
edit:
RickN's oplossing is in principe dezelfde.. sorry
Ja en die van vgouw ook...wat zijn wij slim met z'n allen hè ;)

He who knows only his own side of the case knows little of that.


  • RSD
  • Registratie: Maart 2001
  • Laatst online: 08-02-2017
Dat is dus in principe hetzelfde zoals ik uitlegde met die databases. Je maakt een database aan van 100000000 records en hier zet je weinig prijzen in die veel waard zijn en veel prijzen in die weinig waard zijn. Zover was ik al. Maar dan nog moet ik random een getal tussen 1 en 1000000 kiezen en dat is dus niet wat ik wil. Mijn gevoel zegt dat het makkelijker kan, maar hoe???

(ps: die random functie, is die wel random?? Nu is het antwoord natuurlijk niet, maar in welke mate is hij wel random, dus hoe groot is het randomgehalte van die functie, is daar nog wat aan te sleutelen??)

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09-09 20:58

Janoz

Moderator Devschuur®

!litemod

Goed, dan lees je niet en ga je een grote db maken..

wat dacht je van:
code:
1
2
3
4
5
6
7
8
select 
  min(indicator), 
  anderveld, 
  prijs 
where 
  indicator > randomvalue 
group by
 indicator of prijsid oid;

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

RSD:
(ps: die random functie, is die wel random?? Nu is het antwoord natuurlijk niet, maar in welke mate is hij wel random, dus hoe groot is het randomgehalte van die functie, is daar nog wat aan te sleutelen??)
De mate van randomheid is ongeveer even hoog als de importantie dat jij dit linkje even bekijkt :O

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • RickN
  • Registratie: December 2001
  • Laatst online: 14-06-2025
Op vrijdag 19 april 2002 12:35 schreef RSD het volgende:
Dat is dus in principe hetzelfde zoals ik uitlegde met die databases. Je maakt een database aan van 100000000 records en hier zet je weinig prijzen in die veel waard zijn en veel prijzen in die weinig waard zijn. Zover was ik al. Maar dan nog moet ik random een getal tussen 1 en 1000000 kiezen en dat is dus niet wat ik wil. Mijn gevoel zegt dat het makkelijker kan, maar hoe???

(ps: die random functie, is die wel random?? Nu is het antwoord natuurlijk niet, maar in welke mate is hij wel random, dus hoe groot is het randomgehalte van die functie, is daar nog wat aan te sleutelen??)
Er is nogal een verschil tussen het aanmaken van een complete database om een bepaalde kansverdeling te genereren en het genereren van een random getal. En zover was je nog niet, jouw idee is veel slechter dan dat van ons :Z.

O, en random is random genoeg voor jouw onzinnige kansverdelinkje hoor....

He who knows only his own side of the case knows little of that.


  • Tsjipmanz
  • Registratie: Oktober 2000
  • Laatst online: 13-05 14:52

Tsjipmanz

Der Rudi ist da

Dit gaat echt NERGENS over! :?

Gaan we straks ook om een random getal onder de 10000000 te genereren een array van 10000000 plaatsen vullen met getallen tussen de 1 en de 10000000 en vervolgens hier 1tje random uitpakken zodat je een random getal hebt?!?!

|:(

There's no such thing as a mistake, just happy accidents - Bob Ross
Relaxte muziek: altijd okee!
- Soulseek rulez -


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Wat een schreeuwerig gedoe zeg..

Ga eerst de manual van random (www.php.net/rand) es lezen en daarna bedenken dat een getal uit een range trekken hetzelfde is als testen of een random getal in een bepaalde range is...

mocht er nog zo'n schreeuwerige reactie van iemand komen, dan wordt die ofwel zonder pardon getrashed, ofwel de druppel die de topic laat sluiten.

  • RSD
  • Registratie: Maart 2001
  • Laatst online: 08-02-2017
Het idee is hetzelfde, of je neemt een database of een range, voor de kansverdeling is dit hetzelfde. Maar goed ik kan niet uitleggen wat ik bedoel blijkbaar en gaan jullie sneu doen dat ik de random functie moet bekijken etc net alsof jullie de koning zijn. Beetje trieste reactie in mijn ogen! Ga zo door met iedereen afzeiken. Mijn leraar zei altijd:"er bestaan geen domme vragen!" Hier blijkbaar dus wel!!!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Ik had gewaarschuwd :)

En kijk nog es naar de random functies, dat doet ECHT wat je nodig hebt voor kansverdelingen...

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

ja gooi ff wat olie op het vuur |:(
dan gaat ie nu alsnog dicht

Doet iets met Cloud (MS/IBM)

Pagina: 1

Dit topic is gesloten.