Dans une application Django, une couleur est attribuée à chaque "membre" pour l'aider à s'identifier. Cette couleur est stockée dans la base de données, puis imprimée/copiée dans le code HTML lorsque cela est nécessaire. Le seul problème est que je ne sais pas comment générer des couleurs aléatoires. Hex
couleurs en python/django. Il est assez facile de générer des couleurs RVB, mais pour les stocker, je devrais soit a) créer trois colonnes supplémentaires dans mon modèle "Membre", soit b) les stocker toutes dans la même colonne et utiliser des virgules pour les séparer, puis, plus tard, analyser les couleurs pour le HTML. Aucune de ces solutions n'est très attrayante, donc, encore une fois, je me demande comment générer des couleurs aléatoires. Hex
couleurs en python/django.
Réponses
Trop de publicités?Pour générer des objets aléatoires, consultez la rubrique module aléatoire
Je vous suggère d'utiliser le module pour générer un nombre entier aléatoire, de prendre son modulo 2**24
et traiter les 8 bits supérieurs comme R, les 8 bits du milieu comme G et les 8 bits inférieurs comme B.
Tout cela peut être réalisé avec des opérations div/mod ou bitwise.
J'aimerais améliorer cette solution car j'ai constaté qu'elle pouvait générer des codes couleurs de moins de 6 caractères. Je voulais aussi générer une fonction qui créerait une liste qui pourrait être utilisée ailleurs, par exemple pour le clustering dans matplotlib.
import random
def get_random_hex:
random_number = random.randint(0,16777215)
# convert to hexadecimal
hex_number = str(hex(random_number))
# remove 0x and prepend '#'
return'#'+ hex_number[2:]
Ma proposition est la suivante :
import numpy as np
def color_generator (no_colors):
colors = []
while len(colors) < no_colors:
random_number = np.random.randint(0,16777215)
hex_number = format(random_number, 'x')
if len(hex_number) == 6:
hex_number = '#'+ hex_number
colors.append (hex_number)
return colors