Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Jak niedopuścić do powtarzania liczby?
thomson89
post
Post #1





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

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


Witam!

Nie chcę aby liczby się powtarzały, jak to zrobić?

  1. $i = 0;
  2. while($i <= 16)
  3. {
  4. $liczba = rand(0, count($tabela));
  5. //inna czynność która musi być w tej pętli
  6. $i++;
  7. }
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Wicepsik
post
Post #2





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

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


  1. $i=0;
  2. $liczby = array();
  3. for ($ix=0; $ix < 100; $ix++) {
  4. $start = array_sum(explode(" ",microtime()));
  5.  
  6. do{
  7. if(!in_array($liczba = mt_rand(0, 100), $liczby)){
  8. $liczby[] = $liczba;
  9. $i++;
  10. }
  11. }while($i<100);
  12.  
  13. $times[] = array_sum(explode(" ",microtime())) - $start;
  14. }
  15. echo 'Czas sredni: ';
  16. printf("%.10f", (array_sum($times)/100));


Czas sredni: 0.000356862545013 Fifi
Czas sredni: 0.00377001523972 darko
Czas sredni: 0.0000154257 mój

Ten post edytował Wicepsik 21.02.2010, 13:58:06
Go to the top of the page
+Quote Post
Fifi209
post
Post #3





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

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


Cytat(Wicepsik @ 21.02.2010, 14:36:38 ) *
  1. $liczby = array();
  2. for ($ix=0; $ix < 100; $ix++) {
  3. $start = array_sum(explode(" ",microtime()));
  4.  
  5. do{
  6. if(!in_array($liczba = mt_rand(0, 100), $liczby)){
  7. $liczby[] = $liczba;
  8. }
  9. }while($i<100);
  10.  
  11. $times[] = array_sum(explode(" ",microtime())) - $start;
  12. }
  13. echo 'Czas sredni: ';
  14. printf("%.10f", (array_sum($times)/100));


Czas sredni: 0.000356862545013 Fifi
Czas sredni: 0.00377001523972 darko
Czas sredni: 0.0000154257 mój


Jak Twój ma działać, skoro nie zwiększasz licznika $i w pętli? Poza tym, gdy już liczba istnieje ma losować kolejną tak długo, aż wylosuje unikalną.
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: 10.10.2025 - 13:03