Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Wylosowanie liczby x % większej lub mniejszej od niej
Szunaj85
post
Post #1





Grupa: Zarejestrowani
Postów: 392
Pomógł: 7
Dołączył: 11.05.2008

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


Chciałbym wylosować liczbę do 10% większą lub mniejszą od innej zmiennej, ale nie równą tej zmiennej.
Wylosowana liczba nie może też być ujemna.
Np. Jak moją zmienną jest 80 to musi być to liczba z zakresu 70 - 90, ale nie 80.
Wylosowanie liczby z pewnego zakresu nie jest problemem, ale nie wiem jak to rozwiązać z tymi procentami.
  1. $a = mt_rand(0, 100);
  2. $b = mt_rand(0, 100);
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
pablo89pl
post
Post #2





Grupa: Zarejestrowani
Postów: 143
Pomógł: 19
Dołączył: 7.09.2009
Skąd: Rzeszów

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


  1. <?php
  2.  
  3.  
  4. function losuj($zmienna)
  5. {
  6. $ret = rand($zmienna - ($zmienna*0.1) ,$zmienna + ($zmienna*0.1) );
  7. if($ret == $zmienna) return losuj($zmienna);
  8. else return $ret;
  9. }
  10.  
  11. echo losuj(80)



Może coś takiego...

Efekt: tutaj, o ile bedzie dzialac:)

Ten post edytował pablo89pl 18.03.2010, 11:48:01
Go to the top of the page
+Quote Post
nospor
post
Post #3





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Wylosowanie liczby z pewnego zakresu nie jest problemem, ale nie wiem jak to rozwiązać z tymi procentami.
Przepraszam ze zadam glupie pytanie: nie wiesz jak obliczyc liczbe o 10% mniejszą od zadanej?
Go to the top of the page
+Quote Post
Szunaj85
post
Post #4





Grupa: Zarejestrowani
Postów: 392
Pomógł: 7
Dołączył: 11.05.2008

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


Cytat
Przepraszam ze zadam glupie pytanie: nie wiesz jak obliczyc liczbe o 10% mniejszą od zadanej?
Jasne, że wiem.
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
ale nie wiem jak to rozwiązać z tymi procentami.
no to co mialo znaczyc to zdanie? To czego nie wiesz jak zroic z tymi procentami?
Go to the top of the page
+Quote Post
Szunaj85
post
Post #6





Grupa: Zarejestrowani
Postów: 392
Pomógł: 7
Dołączył: 11.05.2008

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


Rozwiązanie nie jest złe, ale ja bym wolał nie używać funkcji tylko pętle. Którą do tego rozwiązania trzeba użyć?
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




chociazby WHILE lub DO WHILE
Go to the top of the page
+Quote Post
Szunaj85
post
Post #8





Grupa: Zarejestrowani
Postów: 392
Pomógł: 7
Dołączył: 11.05.2008

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


Próbowałem z obiema pętlami, problem polega na tym, że wyświetla mi się czasem 1, a czasem kilka wyników.
  1. while($zmienna <> $zmienna_2)
  2. {
  3. echo($zmienna_2.' ');
  4. $zmienna_2 = mt_rand($zmienna - ($zmienna*0.1) ,$zmienna + ($zmienna*0.1) );
  5. }
Go to the top of the page
+Quote Post
MateuszS
post
Post #9





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Może tak

  1. <?
  2.  
  3. function booyakasha($liczba, $procent)
  4. {
  5. $gornaGranica = ($procent / 100) * $liczba + $liczba;
  6. $dolnaGranica = $liczba - ($procent / 100) * $liczba;
  7. $losuj = rand($dolnaGranica, $gornaGranica);
  8.  
  9. if($liczba == $losuj) {
  10. booyakasha($liczba, $procent);
  11. } else {
  12. return $losuj;
  13. }
  14. return false;
  15.  
  16. }
  17.  
  18. echo booyakasha(100, 16);
  19.  
  20.  
  21. ?>
Go to the top of the page
+Quote Post
Szunaj85
post
Post #10





Grupa: Zarejestrowani
Postów: 392
Pomógł: 7
Dołączył: 11.05.2008

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


Już napisałem, że chcę to zrobić przy pomocy pętli. Tak żeby wyświetlał się jeden wynik inny niż pierwsza zmienna, a nie raz jeden a raz kilkanaście wyników. Tylko, że coś mi nie wychodzi. Proszę o naprowadzenie i wskazanie błędów.

Ten post edytował Szunaj85 18.03.2010, 15:54:13
Go to the top of the page
+Quote Post
MateuszS
post
Post #11





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Y? Dlaczego akurat musi być pętla? Czy mój skrypt nie działa tak jak powinien?
Go to the top of the page
+Quote Post
phpion
post
Post #12





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Zmodyfikowany twój kod:
  1. $zmienna = 80;
  2. $zmienna_2 = $zmienna;
  3.  
  4. while($zmienna == $zmienna_2)
  5. {
  6. $zmienna_2 = mt_rand($zmienna - ($zmienna*0.1) ,$zmienna + ($zmienna*0.1) );
  7. }
  8.  
  9. echo $zmienna_2;
Go to the top of the page
+Quote Post
Szunaj85
post
Post #13





Grupa: Zarejestrowani
Postów: 392
Pomógł: 7
Dołączył: 11.05.2008

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


Cytat
Zmodyfikowany twój kod:
Ok, kod działa
I ostatnie pytanie. Jak zmodyfikować ten skrypt żeby wyświetlały się trzy wyniki, a wylosowane liczby nie powtarzały się i były inne niż pierwsza zmienna?
  1. $zmienna = 80;
  2. $zmienna_2 = $zmienna;
  3. while($zmienna == $zmienna_2)
  4. {
  5. $zmienna_2 = mt_rand($zmienna - ($zmienna*0.1) ,$zmienna + ($zmienna*0.1) );
  6. }
  7. echo $zmienna_2;
Go to the top of the page
+Quote Post
Fifi209
post
Post #14





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(Szunaj85 @ 18.03.2010, 16:30:48 ) *
I ostatnie pytanie. Jak zmodyfikować ten skrypt żeby wyświetlały się trzy wyniki, a wylosowane liczby nie powtarzały się i były inne niż pierwsza zmienna?


Poszukać ciężko? Tutaj
Go to the top of the page
+Quote Post

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: 14.09.2025 - 21:05