Hoe kan je een select query maken die rijen selecteert waarin een waarde staat hoe groot de kans is dat die rij gekozen wordt?

Ik heb hierover al mijn hoofd gekraakt en er moet een oplossing voor zijn, hoewel Google me ook nog niet veel goeds heeft opgebracht.

Ik bedoel dus, stel je hebt een tabel:

- item (bepaald item)
- kans (kans dat dit item uit de tabel wordt geselecteerd)

Hoe kan je een rij selecteren met een item a.d.h.v. de kans dat erbij vermeld staat dat je dit hebt (bv kans om iets te vinden in spel, 1 = zeer weinig te vinden, 10 is zeer makkelijk te vinden)

Iemand dat hier een antwoord op weet?

Weet jij het antwoord?

/2500

Het beste antwoord

Ligt een klein beetje aan wat je er daarna mee wil doen. Als je slechts 1x een select daarop zou doen, kun je gewoon die selecteren met de hoogste kans, dan voldoe je het beste aan de statistieken. Ga je vaker een select daaruit doen, dan VERANDER je de statistieken. Want zodra je de meest voorkomende selecteert, is de kans dat die gekozen was, nog groter geworden, hij is immers alweer 1x vaker geselecteerd. Maar stel dat je 4 rijen hebt, als volgt: ITEM KANS 1 0.1 2 0.2 3 0.3 4 0.4 De totaalkans is 1.0 (0.1+0.2+0.3+0.4). Zie het als een lijn, waarbij de grootte van de kans overeenstemt met de lengte van dat stukje lijn: _0.1_|__0.2__|___0.3___|____0.4____ tot: 0.1 0.3 0.6 1 Als je nu random een getal pakt, kun je op die lijn kijken waar die in valt: DECLARE @rnd FLOAT SELECT @rnd=RAND() Stel @rnd wordt 0.5, dan valt die dus tussen de totalen 0.3 en 0.6, zodat je item 3 als resultaat moet pakken. In SQL: SELECT MIN(id) FROM ( SELECT id, (SELECT SUM(_2.kans) FROM _ AS _2 WHERE _2.id<=_.id) AS totKans FROM _ ) AS subQ WHERE subQ.totKans>0.5 En veralgemeniseerd met RAND(): SELECT MIN(id) FROM ( SELECT id, (SELECT SUM(_2.kans) FROM _ AS _2 WHERE _2.id<=_.id) AS totKans FROM _ ) AS subQ WHERE subQ.totKans>RAND()

Stel zelf een vraag

Ben je op zoek naar het antwoord op die ene vraag die je misschien al tijden achtervolgt?

/100