Distribution aléatoire avec proportion

Bonjour à tous,

J'ai besoin pour faire des stats de pouvoir obtenir dans une colonne, une distribution binaire aléatoire de 1 ou de 2 selon une proportion donnée que l'on pourrait paramétrer.

(Précision, je suis sous Mac)

Par exemple:

Pour un échantillon d'analyse de 10 lignes, je veux 60% de 1 et 40% de 2, ça donnerait:

1

2

2

1

1

2

1

1

2

1

J'ai donc besoin de pouvoir paramétrer la taille de l'échantillon (c'est à dire le nombre de ligne qui peut être grand, par exemple 100 000), les proportions de chaque numéro et de pouvoir générer la distribution.

Pourriez-vous m'aider svp car pour le moment, je le fais à la main et c'est pas la meilleure façon de gagner du temps

Merci par avance!

Bonne journée

Jérôme

bonjour,

une proposition via macro

Re,

Merci infiniment H2so4! Quelle la réactivité! C'est parfait!

C'est exactement ce dont j'ai besoin.

Bonne journée et bonne fête

Jérôme

Bonjour à vous deux,

J'étais en train de travailler sur la demande.

Je pense qu'il va y avoir un problème au-dessus de la ligne 34464.

Même en déclarant les variables en type long je n'ai pas trouvé la solution.

Avez-vous testé sur 100 000 données ?

Cordialement

h2so4, je viens de faire le test avec ton fichier.

Ca marche très bien.

Pour gagner du temps je suis passé par des arrays et je ne comprends pas pourquoi j'ai cette erreur.

Aurais-tu une idée pour ma gouverne personnelle

Amicalement

Bonjour,

une version pour des plus gros volumes.

@ ddetp88,

le problème que tu rencontres, vient de la fonction transpose (qui prend comme paramètre un entier sur 16 bits) et est donc limitée à 65535.

voir discussion à ce sujet entre autre ici

https://forum.excel-pratique.com/viewtopic.php?f=2&t=117999

bonjour h2so4,

Tout à fait exact, j'ai une transposition dans l'affichage de mes tableaux.

Dans ton premier exemple il me semble que les % pouvaient varier sensiblement de 40/60 alors que dans ton nouvel exemple tout va parfaitement bien.

Félicitations et merci pour tes commentaires enrichissants.

Bonnes fêtes de fin d'année.

Bonjour,

j'ai peut-être mal interprété le 40% et 60%. j'ai interprété ces nombres comme étant la probabilité d'avoir des 1 ou des 2. cela ne donne pas une garantie d'avoir 40% de 1 et 60 % de 2. Si la demande est d'avoir exactement 40% de 1 et 60 % de 2, avec des 1 et des 2 répartis au hasard, je dois revoir ma copie.

Bonjour à tous,

Oui effectivement, il s'agit d'avoir si possible exactement la proportion demandée.

Si je rentre par exemple 76% de 1 et 24% de 2, nous devons retrouver dans notre échantillon d'analyse final un mélange aléatoire composé de 1 et de 2 dans les proportions indiquées.

Merci beaucoup pour votre aide!

Bonne journée

Jérôme

Bonjour,

voici une correction.

Surtout pour souhaiter à tous un [b]joyeux Noël[/b]

Un autre code...

avec la remarque de h2so4, voici ce que j'avais hier et que j'ai modifié aujourd'hui.

Plus le nombre de lignes est important meilleurs est le résultat.

Les propositions se ressemblent

Cordialement

Bonjour MaPoire,

Excuse, je n'avais pas vu la page 2 du fil.

Bon boulot et plus simple!

Cordialement

MaPoire,

Je viens de passer un certain temps à comprendre ton code

Dans la première boucle tu affectes les 1 dans la proportion demandées,

Dans la deuxième boucle tu affectes les 2 à partir de la fin de boucle 1 et jusqu' à la fin,

et je te perds dans la troisième boucle avec la fonction hasard...

Est-ce que tu saurais m'expliquer afin que je passe une bonne soirée

Merci pour tes explications...

Bonne soirée.

Joyeux Noël ddetp88

Pour ce qui est de la troisième boucle:

Comme tu le décris, les deux premières boucles remplissent le tableau avec les nombres de 1 et de 2 garantissant les proportions désirées par l'utilisateur.

Ce faisant, on remarque que tous les 1 sont en tête du tableau et tous les 2 en queue de tableau. Ça manque un peu d'aléatoire . Il faut donc "secouer" le tableau.

Pour cela, on va parcourir tous les éléments du tableau:

  • Pour chaque élément i, on calcule aléatoirement un numéro de position dans le tableau (c'est le rôle de n = 1 + Int(Rnd * nTot) qui renvoie un nombre au hasard parmi les NTot éléments du tableau).
  • Ensuite on intervertit l'élément de rang i et celui de rang n avec une méthode classique utilisant une variable tampon aux
    (aux = res(i, 1): res(i, 1) = res(n, 1): res(n, 1) = aux).
  • On fait cela jusqu'au dernier élément.

On a donc déplacé chaque élément du tableau à une autre position "tirée" au hasard. On peut considérer qu'on a mélangé aléatoirement tous les éléments du tableau.

J'espère avoir été suffisamment clair pour ne pas te gâcher la soirée

Merci pour ce retour on ne peut plus clair.

La méthode est infaillible, j'aime!

Joyeux Noël et excellente journée.

ddetp88

Rechercher des sujets similaires à "distribution aleatoire proportion"