Doublons dans une liste aléatoire

Bonjour,

J'essaye ce forum suite à 10 jours de recherche non concluante pour ma solution.

J'ai ici une liste de "mot" aléatoire tiré d'une liste prédéfinis avec un pourcentage de distribution. Cependant, cette même liste peut avoir des doublons, je voudrais simplement que si cette liste tire un doublons, alors elle refait un tirage jusqu'à ne pas en avoir OU une alternative qui permet de ne pas avoir de doublons.

je vous joint un fichier type clean. (la formule est un RecherveV Alea en gros)

En attente de votre aide,

(je ne suis pas contre les code VBA bien que je soit débutant dans ceux-ci.)

Cordialement,

15fichier-test.xlsm (51.92 Ko)

Bonsoir,

Voir essai en Pj

Slts

7fichier-test.xlsm (46.62 Ko)

Edit : ça ne fonctionne pas malheureusement.

L'edit que tu a fait ne se base plus sur mes pourcentage de distribution :'(

Il est très important que le pourcentage de "tombé" soit pris en compte. (j'utilise après ses formules sur des pourcentage plus grand par la suite qui font qu'une "stat" tombe plus qu'une autre)

Bonjour,

Je ne sais pas si cela peut faire avancer la question.

Cdlt.

14ardhakian.xlsx (10.82 Ko)

Merci de vos réponse et de votre attention à mon problème !

En fait la première partie de mon fichier (celle qui donne une distribution en % est importante à inclure). Il faut que le résultat de mon aléatoire sur mes distribution ne fasse pas de doublons.

Sinon je vous décris exactement ce que je souhaite si vous souhaitez partir d'une base de "0"

J'ai besoin qu'en Colonne 1 il est une liste de nom propre que j'écris moi même manuellement.

Dans la colonne 2 j'écris moi même un pourcentage qui est égal à ses chances de tomber.

Ensuite dans une colonne 3, on tire un nom propre aléatoire en incluant son % de chance de tomber pour créer une liste.

Et tout ça sans doublons. (Les doublons tombent très souvent quand un item à plus de 50% chance de tomber)

En attente d'une solution je reste à l'écoute à toute question, je reste très réactif.

Si jamais vous voulez me parlez en vocal ou à l'écris en "temps réel" voici mon ID Discord : Ardhakian#2232

Merci !

Re,

Tu peux peut-être me dire si ma petite contribution est utile ?

Cdlt.

Je ne suis pas si doué que ça donc je n'arrive pas à comprendre les formules que tu as utilisées (équation rang notamment) ni comment l'adapter à ce que je souhaite.

Si les chiffres que tu avais attribués à tes lettres allant de A à T (en N2:N21) pouvaient être leur pourcentage de chance de tomber alors ça ferait ce que je souhaite.

Merci beaucoup d'essayer de m'aider, j'ai peux être aussi du mal à m'exprimer pour me faire comprendre clairement ^^

Re

Un autre essai en Pj

7fichier-test.xlsm (47.98 Ko)

Merci de ton retour,

Il y a de la progression j'ai l'impression (pas mal le bouton d'actualisation j'aimerai bien savoir comment tu l'a fait).

Cependant le % de distribution n'est pas appliqué dans le calcul, j'ai modifié les pourcentage plus bas afin que ce soit plus flagrant lors de potentiel test.

Merci de l'investissement !

Je crois que j'ai créé un monstre ^^ Franchement, si quelqu'un arrive à me comprendre et à trouver une solution, je l'aime ! xD

Bonjour,

solution via une macro

Sub aargh()
    Dim t, pct, i&, q, j&
    With Sheets("G AR Lourd")
        t = .Range("A30:C46") 'chargement table t
        For i = 1 To 10 '10 tirages
            pct = 1 'somme des pourcentages
            q = Rnd() ' tire au hasard un pourcentage entre 0 et 100 %
            For j = 1 To 18 - i
                If q < t(j, 1) Then Exit For ' on s'arrête quand le % cumulé est >= % tiré au hasard
            Next j
            j = j - 1 'l'élément tiré est en position j dans la table
            .Cells(i + 2, "H") = t(j, 3) 'on inscrit l'élément tiré sur la feuille en colonne H
            'on remplace l'élément tiré par le dernier élément du tableau (dernier élément en tenant du numéro de tirage 18-i)
            pct = pct - t(j, 2) ' on ajuste le pourcentage total
            t(j, 3) = t(18 - i, 3)
            t(j, 2) = t(18 - i, 2)
            ' recalculer pourcentage pour les éléments restants
            For j = 1 To 18 - i
                t(j, 2) = t(j, 2) / pct 'pourcentage
                If j > 1 Then t(j, 1) = t(j - 1, 1) + t(j - 1, 2) 'pourcentage cumulé
            Next j
        Next i
    End With
End Sub

Merci énormément, de plus tu à mis des petites annotations afin que je comprend la macro c'est incroyable, merci à toi et à tout ceux qui ont participé !

Cdlt

Rechercher des sujets similaires à "doublons liste aleatoire"