Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Losowa liczb
Ulysess
post
Post #1





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


dzień dobry , posiadam 'grę' internetowa i w niej gracze mogą ulepszać swoje przedmioty , szanse na ulepszenie teoretycznie powinny wynosić 90% a w praktyce to działa na zasadzie

  1.  
  2. mt_srand((double)microtime()*1000000);
  3.  
  4. $liczba_rand = round(rand(101,10000)/100);
  5.  
  6. if(90 >= $liczba_rand)
  7. {
  8. przedmiot ulepsza sie
  9. }
  10. else
  11. {
  12. niszczy
  13. }


wydaje mi się że tak naprawdę szanse nie wynoszą 90% dlatego wpadłem na pomysł aby:
Losowanych było 10 różnych liczb z przedziału od 1 do 100
Następnie losowana jest jedna liczba z przedziału od 1 do 100 i jeśli ta jedna liczba jest równa którejś z tych 10 wcześniej losowanych to przedmiot ulega zniszczeniu , jeśli nie zostaje ulepszony . co ty o tym sądzicie (IMG:style_emoticons/default/questionmark.gif) może w jakiś inny sposób lepiej to zrobić lub zostawić tak jak teraz jest (IMG:style_emoticons/default/questionmark.gif) z góry dziękuje za pomoc (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Noidea
post
Post #2





Grupa: Zarejestrowani
Postów: 226
Pomógł: 61
Dołączył: 20.08.2010

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


Rozwinięcie:
  1. $szanse = array( 90, 84, 79, 73 );
  2.  
  3. foreach( $szanse as $szansa )
  4. {
  5. $suma = 0;
  6. for( $i = 0; $i < 1000000; $i++ )
  7. {
  8. $los = mt_rand( 1, 100 );
  9.  
  10. if( $los <= $szansa )
  11. {
  12. $suma++;
  13. }
  14. }
  15.  
  16. echo "Mialo byc: " . $szansa . "%, jest: " . round( $suma / 10000, 3 ) . "%<br>";
  17. }



EDIT:
No chyba że chodzi ci o szanse typu: 90.84% czy 79.73%, to wtedy faktycznie i szanse i liczby w mt_rand powinieneś pomnożyć przez 100

Ten post edytował Noidea 1.09.2010, 16:58:01
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: 5.10.2025 - 13:21