Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] losowanie
miki92
post 12.06.2007, 12:46:28
Post #1





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 29.04.2007

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


jak mozna zrobic losowanie 10 liczb tak zeby 1 losowal w 1/2 przypadkow 2 w 1/4 przypadkow 3 w 1/8 przypadkow itd.
Go to the top of the page
+Quote Post
v1t4n
post 12.06.2007, 12:50:25
Post #2





Grupa: Zarejestrowani
Postów: 111
Pomógł: 16
Dołączył: 19.02.2005
Skąd: Dębica

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


proponuje zrobic losowanie liczb przyladowo od 1-100. Gdy wybierze liczbe 1 lub zakres 11-50 wtedy zwroci 1. Gdy wybierze 2 lub zakres 51-75 wtedy zwroci 2. Gdy 3 i 76-88 wtedy zwroci 3 itd...


--------------------
Psik!! A masz!! ...chamie - Porucznik Borewicz
Go to the top of the page
+Quote Post
miki92
post 12.06.2007, 12:58:41
Post #3





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 29.04.2007

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


tylo jak to zrobic przy pomocy ifelse??
Go to the top of the page
+Quote Post
Darti
post 12.06.2007, 14:44:14
Post #4





Grupa: Zarejestrowani
Postów: 1 076
Pomógł: 62
Dołączył: 6.03.2005
Skąd: Wroc

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


czyli w 1/1024 przypadków wylosuje 10?
To i tak trochę nie "po statystycznemu", bo suma ułamków jest różna od 1, ale można zrobić coś pseudo - statystycznego.
Tworzę taką niby dystrybuantę w postaci tablicy (jedynek jest 1024, dwójek 512 itd) i losuję spośród całej tablicy. Kod wygląda tak:
  1. <?php
  2. for ($i=1; $i <= 10; $i++){
  3. $ilosc = pow(2,11 - $i);
  4. for ($j=1; $j <= $ilosc; $j++){
  5. $dystrybuanta[] = $i;
  6. }
  7. }
  8. $losowa = rand(0,count($dystrybuanta) -1);
  9. print ("wylosowana liczba to {$dystrybuanta[$losowa]}");
  10. ?>


Mam nadzieję że takie coś wystarczy smile.gif
p.s.:
druga metoda (bez użycia tablicy):
  1. <?php
  2. $losowa = rand(1,2046);
  3. $ilosc = 10;
  4.  
  5. while ($liczba < $losowa){
  6. $liczba += pow(2,$ilosc);
  7. $ilosc--;
  8. }
  9. $ilosc = 10 - $ilosc ;
  10. echo 'Wylosowana liczba to:' . $ilosc;
  11. ?>


Ten post edytował Darti 12.06.2007, 15:24:55


--------------------
The answer is out there, Neo. It's looking for you. And it will find you, if you want it to.
SERVER_SOFTWARE : Apache/2.2.4 (Win32) PHP/5.2.1
MySQL Client API version : 5.0.27
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 06:38