Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Priorytet losowania
Forum PHP.pl > Forum > PHP
Rewil
Próbuje pisać skrypt który z tablicy losuje wynik, wd. ustawienia szansy trafienia.
Czyli mamy dwa rekordy 8 i 4.
O O O O O O O O X X X X
I losujac liczbe z sumy wszystkich liczb z tablicy dostajemy jakąś liczbę która jest elementem do wyboru.($kod_f, $id_kampani_f)

$priorytet[] = 4,8;
$suma_priorytetow = 12;

  1. $ile = count($priorytet)+1;
  2. $losuj = rand(0,$suma_priorytetow);
  3. $x = 0;
  4.  
  5. while($x <= $ile){
  6. $sum_priot = $priorytet[$x] + $priorytet[$x+1];
  7. if($sum_priot > $losuj){
  8. $y = $x+1;
  9. $id_kampani_f = $id_kampani[$y];
  10. $kod_f = $kod[$y];
  11. $x = $ile_reklam - 1;
  12. }elseif($sum_priot == $losuj){
  13. $y = $x;
  14. $id_kampani_f = $id_kampani[$y];
  15. $kod_f = $kod[$y];
  16. }
  17. $x++;
  18. }

Na logike myślę dobrze, ale gorzej z zapisaniem tego do kodu i mi wyskakuje błąd lub nie losuje ;].
Noidea
Nie wiem czy na logikę jest dobrze, bo nie chciało mi się tego czytać z tymi $x i $y, które nie wiem co znaczą.
  1. <?php
  2.  
  3. $kampanie = array( "kam1", "kam2", "kam3" );
  4. $priorytety = array( 5, 13, 2 );
  5. $suma_priorytetow = array_sum( $priorytety );
  6.  
  7.  
  8. $los = rand( 0, $suma_priorytetow - 1 );
  9.  
  10. foreach( $priorytety as $id => $priorytet )
  11. {
  12. if( $los >= $priorytet )
  13. {
  14. $los -= $priorytet;
  15. }
  16. else
  17. {
  18. $wylosowana_kampania = $kampanie[$id];
  19. break;
  20. }
  21. }
  22.  
  23. echo $wylosowana_kampania;
  24.  
  25. ?>


Odpal to sobie 100 000 razy i sprawdź czy wyniki odpowiadają procentowo priorytetom, bo pisane z palca i mógł wkraść się błąd.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.