Webcity.pl


  System wejścia w PHP

  Kompilacja PHP w sys...

  5 niezbędnych czynni...

  Język marketingu

  Czym jest marketing ...

 

 02.02.06 - [new] E-video - artykuł

 30.01.06 - [update] Artykuł o sesjach

 18.12.05 - [update] PDO - artykuł

 19.08.05 - [new+upd] Aktualizacja materia...

 26.04.05 - [update] Nowy artykuł



  Pomocy WML
[php]Sesje nie działają, ...
[actionscript 2.0] [flash...
Problem z talicami w php
[ocena] llll.pl darmowe a...
Kamera na stronie interne...
Kamera na stronie interne...
[xml] Jak wyciągnąć dane
Wizualizacja w JS - POMOC
Web Developer - stała / f...

... i wiele innych wątków na forum ›

Partnerzy
› allRSS.info - katalog zasobów RSS
› iloveflyer.org - webdesign
› webserv.pl - serverpack
› skryptoteka.pl - mnóstwo skryptów
› vel.pl - hosting
› TelePraca.net - pracuj swobodnie
› PHP Solutions - magazyn PHP
› HELION - wydawnictwo informatyczne

Ksišżka dnia

CityMag
Wpisz swój e-mail, aby zaprenumerować nasz Magazyn, który zawiera najnowsze informacje ze świata i najciekawsze teksty.
 

Szukasz czegoś?
Nasza wyszukiwarka znajdzie wszystko, czego szukasz.
 

Szukanie zawansowane


  Reklama
  Redakcja
  Hosting
  Kanał

© WebCity.pl Team
 
 
  Forum Forum
Kursy Kursy
Porady Porady
Recenzje Recenzje
Newsy Newsy
Katalog stron WWW Katalog
Skrypty PHP Skrypty
Download Oferty i praca
Artykuły:
 Teoria
 Praktyka
 Promocja
 Inne
 

 Webcity.pl |

Losowe i nierównomierne wybieranie elementów tablicy
Autor: Zyx
W świecie rzeczywistym możemy wyróżnić dwa typy liczb losowych:
- Równomierne, gdzie prawdopodobieństwo wylosowania każdej liczby jest takie samo.
- Nierównomierne, gdzie niektóre liczby mają znacznie większe prawdopodobieństwo wylosowania, niż inne.

Okazuje się, że zestawiając dwie równomierne liczby losowe otrzymuje się nierównomierną liczbę losową (dokładnie tak samo jest z dwoma kostkami do gry. Prawdopodobieństwo wyrzucenia 1,1 czy 6,6 jest o wiele mniejsze, niż np. 3,4 albo 5,2). Tę właściwość liczb losowych można doskonale wykorzystać do losowania z tablicy elementów przy wykorzystaniu różnego prawdopodobieństwa trafienia dla różnych pól. Oto przykład ilustrujący to:

<?php

   function my_rand(&$dist_values){
      $d1 = rand(0, count($dist_values));
      $d2 = rand(0, count($dist_values));

      $x = $d1 + $d2;

      if($x > count($dist_values)){
         $x = $d2;
      }

      if($x == 0){
         $x = rand(1, count($dist_values));
      }

      return $dist_values[ $x ];

   }

   $dv = array(1 => 'kt', 'dj', 's' , 'm' , 'p' , 'n' , 'g' , 't' , 'th');


   $test = array();

   for($x = 0; $x < 1000; $x++){
      $test[array_search(my_rand($dv), $dv)]++;
   }

   echo '<ul>';
   for($i = 1; $i <= count($test); $i++){
      echo '<li>'.$dv[$i].' - '.$test[$i].'</li>';
   }
   echo '</ul>';

?>

Przykład wyświetla wyniki losowania 1000 głosek z tablicy $dv. Wyraźnie widać na nich, iż im niższy indeks danego pola w tablicy, tym mniej razy zostało ono wylosowane przez napisaną przez nas funkcję my_rand().

UWAGA: Indeksy pól w tablicach muszą koniecznie zaczynać się od 1, a nie od 0!

Powrót