Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] losowy kolor
Forum PHP.pl > Forum > Przedszkole
Taifun
Witam,
jak najprościej za pomocą funkcji rand wylosować dowolny kolor (byle jaki). Jest jakaś klasa do tego albo algorytm?
np. #339933 itp.
Taifun
nie wiedziałbym jak zacząć ale dzięki już znalazłem funkcje:
http://www.phpbuilder.com/board/showthread.php?t=10269284
CapaciousCore
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.
Adi32
Ż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.
Rysh
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));
Adi32
Nie wiedziałem, że rand operuje na szesnastkowych. Dzięki.

Ps. Nie ma "pomógł" gdy nie jestem autorem tematu.
Crozin
@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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.