7
votes

Générer une couleur hexagonale gramée aléatoire?

J'utilise '#' + math.floor (math.random () * 16777215) .Tostring (16); pour générer une couleur hexagonale aléatoire sur la touche appuyez sur la touche.

Ceci est utilisé pour changer la couleur d'arrière-plan chaque fois qu'une touche alpha minuscule est enfoncée.

Je veux modifier ce code pour être ensemencé par le code-clés. Comment puis-je faire cela?

J'ai essayé '#' + math.floor (E. Qui * 16777215) .Tostring (16); mais cela génère un code de 7 caractères au lieu de 6?


3 commentaires

Qu'est-ce que cela a à voir avec jQuery?


Fondamentalement parce que le site Web utilise JQuery peut-être que quelqu'un aurait pu suggérer une version jQuery;)


Oh, tu veux dire comme: $. GetRandomColour (); ? Je suis surpris que personne ne l'a suggéré - sûrement il y a un plugin JQuery pour ce .


4 Réponses :


4
votes

Vous obtenez un code de lettre 7 car vous travaillez avec un numéro qui ne peut pas être représenté comme 6 de caractères hexadecimal.

16777215 (base 10) dans la base 16 est ffffff . Si votre numéro décimal augmente tout plus grand, une autre lettre hexadécimale / chiffre sera utilisée pour l'exprimer.

Pour que votre code fonctionne, assurez-vous simplement 16777215 est le plus élevé.

222 semble être le code clé le plus élevé possible (corrigez-moi si je me trompe): xxx / p>


0 commentaires

-2
votes

Un code de couleur hexagonale comporte 3 composants de 00 à FF concaténés pour former une seule chaîne. Ce n'est pas simplement un numéro hexagonal de 6 caractères. Donc, un générateur de couleurs aléatoires serait quelque chose comme: xxx

ajoutez de semis au besoin.


2 commentaires

Il n'y a absolument aucune différence entre un numéro hexagonal aléatoire de 6 caractères et 3 numéros hexagonaux aléatoires de 2 caractères concaténés ensemble, à moins que quelque chose ne va pas avec le générateur de nombres aléatoires, ce qui ne répond pas réellement à la question de l'OP.


@ Mumind-Oui, vous êtes correct, où les composants sont 00 à FF donnant 000000 à FFFFFF. Peut-être que j'ai été distrait par la gamme décimale de 0 à 255.



25
votes

En disant que vous voulez un nombre aléatoire "ensemencé", je suppose que vous voulez la même couleur chaque fois que la même clé est enfoncée. Malheureusement, vous ne pouvez pas contrôler le Math.random () code> graines en JavaScript et n'accepte pas une graine comme paramètre comme dans d'autres langues.

Vous pouvez générer un numéro hexagone de recherche aléatoire avec quelque chose comme ceci: p> xxx pré>

Ceci devrait générer un numéro unique pour tout dans la gamme ASCII, mais certaines des couleurs peuvent très similaires. p>

p>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="out">Type in the input box to change its background color :<input id="test">
    <p>Below is a list of colors generated for ASCII 32 through 126</p>
</div>


2 commentaires

Hé bonne solution! Je sais que cela fait longtemps que cela n'a pas pu éviter l'étape% puisque vous utilisez le péché qui appartient toujours à [-1, 1]? L'utilisation d'ABS garantit également que la sortie appartient toujours à [0, 1] * 0xFFFFFF.


@afe Vous avez raison, merci de le pointer. J'ai mis à jour la réponse.



-1
votes

Un javascript facile à utiliser serait ceci:

function getRandomColor() {
        var letters = '0123456789ABCDEF'.split('');
        var color = '#';
        for (var i = 0; i < 6; i++ ) {
            color += letters[Math.round(Math.random() * 15)];
        }
        return color;
    }


2 commentaires

L'OP a déjà du code pour générer des valeurs de couleur aléatoires. Ils demandent comment la modifier pour que la valeur de couleur dépend de la touche enfoncée, ce qui ne vous aide pas.


math.floor (math.random () * 16) serait préféré. Math.Random () génère des chiffres dans [0,1) - 1 exclu. Votre version retourne 0 et 15 avec la moitié de la probabilité des autres nombres ».