PHP gevorderde |
|
Ik heb een situatie met een denkprobleem waar ik niet uitkom.
Ik moet bepalen of iets wel of niet wordt uitgevoerd.
Dit moet aan de hand van een percentage (0 tot 100) wat in de database staat.
Je raadt het misschien al, ik wil random bepalen of iets wel of niet uitgevoerd wordt ( mt_rand(0,1); ), maar op de een of andere manier moet ervoor gezorgd worden dat als je dicht bij de 0 zit, het vaker uitgevoerd wordt, en hoe dichter je bij de 100 komt steeds minder.
op 0 moet het altijd uitgevoerd worden en op 100 nooit, maar dat is niet zo moeilijk te realiseren.
Ik zou graag weten hoe ik ervoor kan zorgen dat bijv. 10% relatief vaker uitgevoerd wordt dan bijv. 65%.
EDIT:
Na veel zoeken met google heb ik een topic op tweakers gevonden met een soortgelijk probleem, aan de hand daarvan ben ik aan het proberen gegaan, en ben tot het volgende gekomen:
<?php
$aanvullen = 100 - $percentage
$kansarray = array();
for ($i=1; $i<=$percentage; $i++)
{
$kansarray[] = 0;
}
for ($i=1; $i<=$aanvullen; $i++)
{
$kansarray[] = 1;
}
shuffle($kans);
$random = mt_rand(0,99);
$uitkomst = $kansarray[$random];
?>
<?php $aanvullen = 100 - $percentage for ($i=1; $i<=$percentage; $i++) { $kansarray[] = 0; } for ($i=1; $i<=$aanvullen; $i++) { $kansarray[] = 1; } $uitkomst = $kansarray[$random]; ?>
Ik vul nu de array met 100 waardes waarvan er 'het aantal procent' 0 zijn, en de rest 1.
In mijn ogen zorgt dit voor een 'eerlijke' verdeling en levert het op wat ik wil? Heb ik het juist?
|