Un "random" pour faire des tests répétables : hashage ?

Bonjour,

il me semble que la fonction n'existe pas, j'ai souvent besoin d'un truc aléatoire pour faire des tests, (en gros, un nombre aléatoire pour le calcul de B2, un autre pour B3, un autre pour B4, un autre aussi pour C2, C3 ...), mais répétable d'un test sur l'autre. (donc, le même nombre aléatoire dans B2 que le coup d'avant). Et j'ai évidement besoin de recalculer mes cellules.

C'est typiquement la notion de graine, que l'on ne contrôle pas dans Excel. (et encore, l'ordre d’exécution des cellules pouvant changer, même choisir la graine ne suffirait pas)

En gros, il me faut une fonction de hashage de ligne()&colonne(), qui soit très simple à écrire, et qui donne une répartition pas trop moisie.

A ce jour, j'utilise un stxt sur les lointaines décimales de cos(ligne())+sin(colonne()), mais j'ai toujours l'impression que cela me donne une répartition moisie, tout en fatiguant certainement un peu le temps cpu, j'imagine que sin et cos ne sont pas les fonctions les plus rapides.

Quelqu'un a déjà eu la même envie, et à trouvé une meilleure solution ?

(et si vous n'avez pas trouvé une meilleure solution, vous pouvez déjà prendre la mienne, je vous l'écrit en entier :

STXT(TEXTE((SIN(LIGNE())+COS(COLONNE()));"0,00000000");6;4)

-> cela donne un nombre entre 0 et 9999 )

Ah, et évidement, pas de macro.

(ce serait à ajouter dans les cours ca : éviter les macro tant que vous pouvez)

Salut Peuwi et bienvenue sur le Forum,

Je n’ai pas compris ton besoin, encore moins ton début de solution et surtout pas ta haine des macros

Dans le fichier ci-joint, j’ai tenté de placer ta formule dans diverses cellules, mais je ne vois pas où tu veux en venir.

Je pense qu’un fichier-modèle de ton cru avec quelques explications de plus serait tout à fait souhaitable.

Ne goûte surtout pas aux macros : c’est comme les cacahuètes, tu ne pourrais plus t’en passer

Amicalement.

16classeur1.xlsx (9.44 Ko)

Ma question est surtout destinée à ceux qui auraient déjà eu le même problème et auraient trouvé une réponse, ou à la rigueur, à des spécialistes des fonctions de hashage, mais pour le coup, je ne serais pas au bon endroit

Enfin, je veux bien mettre un fichier (un fichier, parce que des cas où j'ai besoin d'un random, j'en ai souvent).

D'ailleurs, je pourrais le mettre dans application.

J'ai laissé à coté le générateur sur un grand nombre de valeur, et la répartition ne semble pas géniale. (alors, "semble", car je suis mauvais en stats, et incapable d'analyser réellement la qualité de la répartition)

Voilà, si le générateur est pourri, la génération de terrain sera pourrie. Quand j'utilise un alea(), mes terrains ont plus de gueule.

Maintenant, pourquoi les macro, c'est le mal ... Ben, j'ai l'impression que vu ce que je lis sur ce forum, je vais avoir du mal à convaincre grand monde, et accessoirement, ce n'est pas le fil pour, mais néanmoins ...

Alors, pour 2 grandes raisons : une raison professionnelle déjà.

Quand on réalise des macro dans un univers pro, à moins d'être dans une équipe de devs compétents, on génère de la dette technique. Bon, je reconnais que c'est aussi valable avec les formules excel trop complexes.

Pour parler crûment, j'appelle cela une trainée de boue. "la où la macro est passée, l'herbe ne repousse pas". Le développeur parti, l'outil est bon à jeter. C'est très bien pour se rendre indispensable, mais ca fait chier les projets.

Alors qu'un outil purement excel, s'il n'est pas trop tordu et ni trop illisible, on peut imaginer que le cadre moyen saura le modifier un peu.

Par ailleurs, un outil développé par des macro aura les limites qui ont été incluses dans la macro. Si on crée une macro pour ajouter une ligne, il faudra aussi développer l'outil pour en supprimer une, en déplacer une, et encore un autre pour updater ... Cela n'a pas de fin.

A l'inverse, un outil réalisé proprement avec des formules sera intégré dans le tableau, et n'aura pratiquement pas de contraintes, toutes les possibilités d'excel resteront ouvertes.

Maintenant, j'ai aussi une raison personnelle :

Je suis (ou j'ai été) développeur, je sais ce que c'est.

Excel (enfin, les tableurs), sont des outils exceptionnels, uniques. Un truc tout à fait particulier que l'on ne trouve pas ailleurs. Personnellement, j'appelle cela un langage de programmation wiziwig, et pour moi, "VBA", c'est la préhistoire.

Parce que si je veux faire du VBA, je pourrais tout aussi bien faire du C ou du java. Et je sais le faire (mieux qu'en VBA d'ailleurs), et j'aurais bien des possibilités que je n'aurais pas en VBA.

Maintenant, on prends l'exemple tout bête de l'outil mis en pièce jointe.

Une algorithme diamant carré, c'est à peine quelques lignes de code.

Si je veux le coder, je ne vois même pas pourquoi je le ferais en VBA, autant le faire directement en C.

Le faire en formules excel, c'est quand même plus difficile, mais définitivement, cela ne fait pas la même chose. Si je veux mettre 16 ou -256 dans la cellule A1 juste pour voir ce que ca fait, c'est immédiat. Avec une macro, cela demande une modif dans le code à chaque fois (et une relance de la macro)

C'est toute la différence entre du wiziwig et du compilé.

C'est pour la même raison que les gens utilisent word au lieu de latex. Et je sais écrire en latex

Et accessoirement, si j'ai développé le diamant carré, ce n'était pas pour la gloire, c'était pour le "voir", pour en comprendre les principes fondamentaux que je pourrais ensuite réutiliser par ailleurs, d'une autre façon. Si je l'avais bêtement codé en courant après les erreurs de code, je n'aurais obtenu que le résultat, sans réellement le comprendre.

Maintenant, avec un random qui est une fonction de hashage des lignes et colonnes, je peux facilement faire un petit truc rigolo :

j'ajoute aux colonnes un petit nombre pris dans une cellule. Et puis j'incrémente ma cellule, et hop, le terrain part sur la gauche. Je suis comme un petit hélicoptère qui survole la map, c'est-y-pas mignon ? Voilà pourquoi développer des choses avec des formules excel, c'est radicalement différent de développer des macro.

Oh, et accessoirement, écrire une petite formule, ca prends 1minute.

Ecrire l'équivalent en macro, cela prends 10 fois plus de temps.

Salut Peuwi

As tu essayer un simple : =10+ENT(ALEA()*100) ?

Voire =10+ENT(ALEA()*10000)

Ben, le but du jeu, c'est justement de remplacer alea(), puisque le vilain change de valeur dès qu'on update une cellule.

Rechercher des sujets similaires à "random tests repetables hashage"