Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Losowy element + waga elementu
Forum PHP.pl > Forum > PHP
windman
Witam,

Zastaawiam się jak wyciągnąć losowy element tablicy biorąc pod uwagę wagę elementów.

$tablica[1][1]="Jan";
$tablica[1][2]="Karol";
$tablica[1][3]="Roman";
$tablica[3][1]="Andrzej";

Tablica dwuwymiarowa, pierwszy index wskazuje wagę elementu.
W tym przypadku powinienem otrzymywać na przemian element Andrzej i któryś z pozostałych - ponieważ element Andrzej ma wagę 3 a pozostałe 1.

Ma ktoś pomysł jak napisac skrypt do czegoś takiego?

Mogę oczywiście stworzyć tablicę wpisując do niej tyle razy dany element ile wynosi jego waga następnie normalnie losować jeden element tablicy, powinno działać prawidłowo, ale jakoś mało eleganckie rozwiązanie, nie uważacie?
Grzyw
Niezły problem:)
Nic nie przychodzi do głowy. Zrobiłbym to na pewno tak, jak sam zamierzasz to zrobić:

  1. <?php
  2. $tablica[1][1]="Jan";
  3. $tablica[1][2]="Karol";
  4. $tablica[1][3]="Roman";
  5. $tablica[3][1]="Andrzej";
  6.  
  7. foreach ($tablica as $waga => $wewnTab)
  8. {
  9. foreach ($wewnTab as $wartosc)
  10. { 
  11.  for ($i=0$i<$waga;$i++) $doLosowania[] = $wartosc
  12. }
  13. }
  14. $losowyIndex = rand(0,count($doLosowania));
  15. echo $doLosowania['losowyIndex'];
  16. ?>
windman
Cytat(Grzyw @ 4.03.2008, 15:53:55 ) *
Niezły problem:)
Nic nie przychodzi do głowy. Zrobiłbym to na pewno tak, jak sam zamierzasz to zrobić:


Muszę przyznać, że działa to bardzo dobrze. Nie wiem, czy jest sens szukać innego rozwiązania ale zawsze warto zapytać bardziej doświadczonych kolegów ;-)

Pozdrawiam
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.