Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Losowanie wagowe w procentach, gdzie każda wartość ma swój procent..
Giluś
post
Post #1





Grupa: Zarejestrowani
Postów: 377
Pomógł: 9
Dołączył: 2.11.2010

Ostrzeżenie: (0%)
-----


Hej, potrzebuję zrobić losowanie wagowe.. posiadam takie wartości:

Kod
0.1 = 70%
0.2 = 70%
0.3 = 70%
0.4 = 70%
0.5 = 70%
0.6 = 50%
0.7 = 50%
0.8 = 50%
0.9 = 50%
1.0 = 50%
1.1 = 30%
1.2 = 30%
1.3 = 30%
1.4 = 30%
1.5 = 10%
1.6 = 10%
1.7 = 10%
1.8 = 5%
1.9 = 5%
2.0 = 5%


Znalazłem coś takiego do losowania liczb z przecinkiem:

  1. $min=0.1;
  2. $max=2.0;
  3. $liczba=rand(pow(10,1)*$min,pow(10,1)*$max)/pow(10,1);
  4. echo $liczba;


Ale teraz jak wylosować daną liczbę z odpowiednią jej "wagą" ?


Pozdrawiam i z góry bardzo dziękuje za pomoc (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Sephirus
post
Post #2





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Jeśli masz tak konkretnie ustalone wagi najlepiej użyć myku z tablicami.

  1. $tablicaLiczb = array();
  2. $tablicaLiczb['0.1'] = 70;
  3. $tablicaLiczb['0.6'] = 50;
  4. $tablicaLiczb['2.0'] = 5;
  5. // itd...
  6.  
  7. $tablica = array();
  8. $ostatniaLiczba = 0;
  9.  
  10. foreach($tablicaLiczb AS $liczba => $waga) { // dla każdej liczby do wylosowania
  11. for($i = 0; $i < $waga; $i++) { // generujemy liczby w ilości równej wadze liczby
  12. $tablicaLiczb[$ostatniaLiczba++] = $liczba;
  13. }
  14. }
  15.  
  16. echo $tablicaLiczb[mt_rand(0,$ostatniaLiczba-1)]; // losujemy liczbę z zakresu wygenerowanych liczb i zwracamy rekord tablicy pod tą liczbą zawierający naszą szukaną liczbę
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 21:32