Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Określony procent wylosowania liczby
Dominator
post
Post #1





Grupa: Zarejestrowani
Postów: 565
Pomógł: 15
Dołączył: 11.10.2010

Ostrzeżenie: (20%)
X----


Witam
Jak napisać skrypt, który ma 10% szans na wylosowanie liczby 50?
Go to the top of the page
+Quote Post
Michael2318
post
Post #2





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

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


Sporo tego w sieci, wystarczy poszukać:
http://forum.php.pl/index.php?showtopic=126356
http://stackoverflow.com/questions/8806006...rcentage-chance
http://forums.phpfreaks.com/topic/161480-s...percent-chance/

EDIT:

Dorzucam też swoją funkcję - http://majkelo.pl/php-losowanie-liczby-z-o...owania,vp15.htm
czyli:

  1. function los_chance($to_chance, $chance, $from, $to)
  2. {
  3. $chance = intval($chance);
  4. $from = intval($from);
  5. $to = intval($to);
  6. $to_chance = intval($to_chance);
  7.  
  8. if ( $chance == 0 )
  9. {
  10. return rand($from, $to);
  11. }
  12.  
  13. $check_chance = rand(0, 100);
  14. $check_chance = ($check_chance <= $chance) ? TRUE : FALSE;
  15.  
  16. if ( $check_chance == TRUE )
  17. {
  18. return rand($from, $to);
  19. }
  20. else
  21. {
  22. return rand(($to_chance+1), $to);
  23. }
  24. }


gdzie:
$to_chance - do jakich liczb procent trafienia się odnosi,
$chance - procent trafienia,
$from - z jakiego przedziału ogólnie liczby mają być losowane,
$to - liczba zamykająca przedział.

Jak to ma działać - przykład:
  1. echo los_chance(7, 10, 0, 150);


Wypluje Ci liczbę, z przedziału 0-150, jednak procent trafienia dla liczb od 0* do 7 wynosi zaledwie 10%.
* - od zera dlatego, że w argumencie funkcji $from to właśnie zero.

Ten post edytował Michael2318 15.03.2013, 23:41:14
Go to the top of the page
+Quote Post
timon27
post
Post #3





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

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


Cytat(Michael2318 @ 15.03.2013, 22:45:29 ) *
Dorzucam też swoją funkcję


Mocno przekobinowałeś, jeśli Dominator chciał ten jeden przypadek to wystarczy mu:
  1. echo rand(50,59);




Ten post edytował timon27 16.03.2013, 11:00:09
Go to the top of the page
+Quote Post
Michael2318
post
Post #4





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

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


Cytat(timon27 @ 16.03.2013, 10:56:18 ) *
Mocno przekobinowałeś


Dodałem funkcję bardziej uniwersalną, dzięki czemu może dać dowolny procent dla dowolnych liczb. Jeśli jemu się to nie przyda (a w jakimś stopniu myslę, że na pewno pomoże) to może rozwiąże problem innych osób, które kiedyś trafią tu po wynikach wyszukiwania wink.gif
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 Aktualny czas: 19.08.2025 - 19:54