Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] losowy kolor
Taifun
post
Post #1





Grupa: Zarejestrowani
Postów: 222
Pomógł: 2
Dołączył: 10.07.2007

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


Witam,
jak najprościej za pomocą funkcji rand wylosować dowolny kolor (byle jaki). Jest jakaś klasa do tego albo algorytm?
np. #339933 itp.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




rand" title="Zobacz w manualu PHP" target="_manual + dechex" title="Zobacz w manualu PHP" target="_manual
Go to the top of the page
+Quote Post
Taifun
post
Post #3





Grupa: Zarejestrowani
Postów: 222
Pomógł: 2
Dołączył: 10.07.2007

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


nie wiedziałbym jak zacząć ale dzięki już znalazłem funkcje:
http://www.phpbuilder.com/board/showthread.php?t=10269284
Go to the top of the page
+Quote Post
CapaciousCore
post
Post #4





Grupa: Zarejestrowani
Postów: 30
Pomógł: 4
Dołączył: 28.09.2009
Skąd: Chełm

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


Przepraszam za odkopanie tematu sprzed paru miesiecy lecz uznalem, ze moze sie potomnym przyda. Powyzej kolega Taifun wrzucil link do rozwiazania lekko zabalaganionego moim zdaniem. Ponizej znajduje sie prosta funkcja do losowania kolorow w 3 roznych postaciach:
  1. <?php
  2. $cfg['primary_color'] = array('black', 'silver', 'gray', 'white', 'maroon', 'red', 'purple', 'fuchsia', 'green', 'lime', 'olive', 'yellow', 'navy', 'blue', 'teal', 'aqua');
  3.  
  4. function core_random_color($type)
  5. {
  6. /*
  7.   * @Name_function: core_random_color
  8.   * @Description: function returns a random color, depending on $type
  9.   * @Argument: $type (string)
  10.   * primary -> 16 combination
  11.   * short -> 4 096 combination
  12.   * long -> 16 777 216 combination
  13.   * @Return: (string)
  14.   */
  15.  
  16. global $cfg;
  17.  
  18. // Jeżeli wersja PHP < 4.2.0 wtedy zachodzi potrzeba użycia generator liczb losowych
  19. // srand(floor(time() / (60*60*24)));
  20.  
  21. if($type == 'primary')
  22. {
  23. $tmp['output'] = $cfg['primary_color'][array_rand($cfg['primary_color'])];
  24. }
  25. else if($type == 'short' || $type == 'long')
  26. {
  27. $tmp['output'] = '#';
  28.  
  29. for($h = 0, $tmp['how'] = ($type == 'short' ? 3 : 6); $h < $tmp['how']; ++$h)
  30. {
  31. $tmp['output'] .= dechex(rand(0, 15));
  32. }
  33.  
  34. // Zbędna kosmetyka dla fanatyków
  35. $tmp['output'] = strtoupper($tmp['output']);
  36. }
  37.  
  38. return $tmp['output'];
  39. }
  40.  
  41. echo core_random_color('primary');
  42. echo '<br />';
  43. echo core_random_color('short');
  44. echo '<br />';
  45. echo core_random_color('long');
  46. ?>

Demo skryptu losowanie koloru

Inne funkcje, ktore moga sie przydac przy losowaniu koloru znajduja sie w artykule pod tytulem [PHP] Losowy kolor w trzech postaciach.

Ten post edytował CapaciousCore 28.12.2009, 06:20:52
Go to the top of the page
+Quote Post
Adi32
post
Post #5





Grupa: Zarejestrowani
Postów: 348
Pomógł: 26
Dołączył: 8.10.2008
Skąd: Lublin

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


Że tak sobie pozwolę się podpiąć...

Muszę zrobić generator losowego koloru do pewnego dużego skryptu.
Niby nic trudnego jednak chciałbym aby było to rozwiązanie najbardziej optymalne.

Chodzi o to aby kolor nie był wybierany spośród podany ale spośród możliwych (tam chyba jakoś ponad 16 milionów).

  1. $kolor = losowy_kolor(); // #2A7F26


Jest bardzo wiele kombinacji jak mniemam i najlepszym wyjściem wydaje mi się wygenerowanie 3 liczb od 0 do 255, hexdec() i je skleić.

PS pod PHP i JS.
Go to the top of the page
+Quote Post
Rysh
post
Post #6





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

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


Cytat(Adi32 @ 25.06.2012, 15:41:08 ) *
Muszę zrobić generator losowego koloru do pewnego dużego skryptu.
...
Jest bardzo wiele kombinacji jak mniemam i najlepszym wyjściem wydaje mi się wygenerowanie 3 liczb od 0 do 255, hexdec() i je skleić.

Prościej się chyba nie da:
  1. $kolor = dechex(rand(0x000000,0xFFFFFF));
Go to the top of the page
+Quote Post
Adi32
post
Post #7





Grupa: Zarejestrowani
Postów: 348
Pomógł: 26
Dołączył: 8.10.2008
Skąd: Lublin

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


Nie wiedziałem, że rand operuje na szesnastkowych. Dzięki.

Ps. Nie ma "pomógł" gdy nie jestem autorem tematu.

Ten post edytował Adi32 25.06.2012, 15:17:51
Go to the top of the page
+Quote Post
Crozin
post
Post #8





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


@Rysh: Raczej powinno używać się mt_rand zamiast rand - bardziej losowy wynik i szybszy czas jego wygenerowania.
@Adi32: Bo nie operuje. Podstawy składni PHP: http://php.net/manual/en/language.types.integer.php
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: 23.12.2025 - 02:41