tirage au sort complexe

  • Initiateur de la discussion jim
  • Date de début
J

jim

Guest
.. enfin, complexe selon moi, peut-être moins pour vous...

Re-Bonjour à tous,
Je voudrais faire gagner des places de cinéma (il n'y en aura pas pour vous désolé...). Les gens s'inscrivent au tirage au sort en indiquant nom et prénom, email, ville (liste déroulante) et s'ils souhaitent gagner 1, 2, 3 ou 4 place(s).

Je reçois tout ça dans un beau fichier excel.
Pour chaque ville, je peux faire gagner un nombre de places précises.
(exemple Paris : 120, Lyon : 70, Marseille : 90, etc...)

DONC !

Après dédoublonnage, je voudrais choisir une ville et un nombre de place, et Excel me sort un tirage aléatoire de noms, mais de façon à ce que le nombre de places corresponde à ce dont je dispose.

exemple :
J'ai 8 places pour Rouen, j'obtiens :
- Paul 2 places
- Marie 1 place
- Jean 3 places
- Anne 2 places

Ce que je pensais, c'était qu'il y aurait par exemple une première partie de la macro qui ferait un tri sur le nombre de places.
exemple, pour obtenir 94 places, il faut
10 X 1 place
9 X 2 places
10 X 3 places
9 X 4 places

Et une seconde partie, qui tire au sort parmi les noms qui ont déclarés vouloir X places...

Merci de vos lumières !!!
 
L

LaurentTBT

Guest
Bonjour Jim,

Bon, pas simple ton histoire, mais ce que je vois déjà, c'est qu'il faut fixer une règle pour attribuer le nombre de places
En effet, pour reprendre ton exemple des 8 places à Rouen,
Tu peux avoir plusieurs combinaisons:
1x4 + 2x2, ou 4x2, ou 2x3 + 2x1, etc…

Il nous faudrait plus de détail
Ainsi, quelqu'un qui a coché 4 peut-il finalement gagner un nombre inférieur (ce qui simplifierait bien)? Je pars sur cette possibilité.

Moi, je verrais plutôt cet algorythme:
Pour une ville avec N places
...Tu tires au sort un bulletin
……...Il gagne le nombre de places inscrites i (ou moins si le nombre de place dispo est inférieur), donc il gagne Min(i,N) places
……...Tu enlèves ce nombre de places distribuées du nombre initial: N=N-Min(i,N)
...et tu recommences en tirant un autre bulletin
jusqu'à ce que N soit 0

Puis idem avec les autres villes.

Pour le tirage au sort, plusieurs possibilités, mais celle-ci me parait pas trop difficile à mettre en œuvre.
Tu attribues au hazard une valeur à chaque bulletin (=Alea() dans une colonne supplémentaire)
Ensuite, tu les tries par ordre croissant selon cette valeur tirée au hazard
Le plus petit est le premier tiré au sort
puis le suivant,
etc
Ceci étant bien sûr effectué pour chaque ville.

Voilà, il n'y a plus qu'à…

Regarde déjà si la logique te convient.

Bon courage.
 
D

Dugenou

Guest
Jim,

Voici un essai de début de solution sans macro. J'ai un petit probleme pour distribuer l'intégralité des places disponibles : c'est à dire mon systeme distribue au maximum le nombre de places dispo pour une ville mais parfois il reste des places.

Peut d'ête que d'autres feront mieux.

Salut
 

Pièces jointes

  • jimtiragecomplexe.zip
    4 KB · Affichages: 19
D

Dugenou

Guest
Salut laurent,

je suis assez content de moi car je ne suis pas trop loin de ta philosophie, sauf que j'ai totalement et volontairement omis les premier partage des places par ville.
Peut être avec un systeme à deux étages : 1) on tire le nombre de places par ville sans dépasser la maximum demandé puis on distribues ces places aux demandeurs..

Jim aurais tu le beau fichier excel (ou un morceau) avec des données ?


Salut
 
J

jim

Guest
Merci de votre aide,

Malheureusement je n'ai pas encore de fichier exemple sous la main car les inscriptions ne sont pas encore lancées.
J'ai fait rapidement un exemple...

Pour la répartition, le nombre de combinaisons, etc...
Le fait de choisir parmi 1, 2, 3 ou 4 a cet avantage qu'en les aditionnant on obtient 10 (1+2+3+4=10). Donc si mon nombre de place est 67,
je distribue comme ça :
6X1 + 6X2 + 6X3 + 6X4 = 60
0X1 + 0X2 + 1X3 + 1X4 = 7
Le plus gros des places avec le même volume de gagnant, et le reste en essayant de m'approcher de 1.
Exemple avec 66 :
6X1 + 6X2 + 6X3 + 6X4 = 60
1X1 + 1X2 + 1X3 + 0X4 = 6
L'éventail des places va de 81 à 607.

Il se peut aussi, que personne ne demande 1 ou 2 places...
A+ Jim
 

Pièces jointes

  • jimtiragecomplexe00.zip
    3.3 KB · Affichages: 18
L

LaurentTBT

Guest
Salut Dugenou, pas mal du tout, tes formules!

En effet, il peut rester des places non distribuées. C'est pour ça que je donne toujours à une personne tirée au sort le plus grand nombre de places possible (si elle en demande 3, je lui en donne 3, et pas 1 ni 2. Mais du coup, je ne pense pas que ce soit faisable en formule, ou alors très complexe.

Bon, attendons les infos et le fichier…
 
M

Michel_M

Guest
Bonjour à tous,

Sympa, ton problème...

Ci joint une proposition qui te fait le tirage au sort pour les habitants d'une ville où tu offres N places

le choix part de saisies d'inscrits ttes villes confondues où j'élimine les doublons "nom&prénom"
puis j'élimine les habitants des autres villes

et je tire au hasard dans les restants

Le tirage au hasard fait que tu peux parfois rester avec des places; par exemple 12 places offertes mais uniquement 10 d'attribués parce que les restants ont demandé chacun 3 ou 4 places.

mais quand je vois les big formules, je me dis que j'ai certainement mal pigé ton problème

Enfin, ca m'aura occupé

Bonne soirée
Michel
 

Pièces jointes

  • cinoche.zip
    12.4 KB · Affichages: 19
  • cinoche.zip
    12.4 KB · Affichages: 20
  • cinoche.zip
    12.4 KB · Affichages: 19
M

Michel_M

Guest
Re,

Après avoir + ou - bien cogité sur ton souci de vouloir attribuer tous les lots, il semble que seul cas où tu es sûr de tout distribuer est quand le nombre d'inscrits "une place" est supérieur ou égal au nombre de places allouées.

le cauchemar étant quand une catégorie de lots , notamment 3 et 4 places, est supérieur au nombre d'inscrits de la catégorie.

Il faudrait donc calculer le nombre de lots par catégorie à partir du nombre d'inscrits dans chaque catégorie, c'est à dire après la clôture du jeu: est ce bien légal?

Si oui, tu pourrais établir un bareme dans le style
20 places = 1lot de 4, 1 lot de 3, 4 lots de 2, 5 lots de 1
30 places= 2 lots de 4 etc.
(tout se jouera sur le nombre de 1...)
et prendre des conditions de subtitution:
par exemple: si il me manque 1 inscrit 4 places le lot est transformé en lot 3 places + 1 lot 1 places, si il manque un "3places"=1"2 places" + 1 "1place" etc.

Je te souhaite alors bien du plaisir: j'ai commencé et...

Donc, bien que ca me plaise pas trop,je reclique sur le bouton au cas où


IL y a une faute de frappe dans la macro au lieu de:
inscrits.Add Range(Cells(cptr, 1), Cells(cptr, 5)), Cells(cptr, 1).Value & Cells(cptr, 5).Value

il faut écrire:
inscrits.Add Range(Cells(cptr, 1), Cells(cptr, 5)), Cells(cptr, 1).Value & Cells(cptr, 2).Value

A+
Michel
 
J

jim

Guest
Ahhhh ! Ca avance, merci merci.
Alors voilà le fruit de mes réflexion nocturnes...

Pour simplifier les choses, je peux "redistribuer" les probabilités en fonction des déclarations de chaque participant.

Par exemple, dans un premier temps je choisi une ville.
Je peux voir (de manière anonyme) qu'il y a :
6 personnes qui ont déclaré vouloir un lot de 1 place
25 personnes qui ont déclaré vouloir un lot de 2 places
12 personnes qui ont déclaré vouloir un lot de 3 places
42 personnes qui ont déclaré vouloir un lot de 4 places

J'ai 30 places au total à distribuer.

J'ai la possibilité de saisir pour chaque lot un nombre de gagnants, comme s'il y avait un tirage au sort pdistinct pour chaque lot, et excel cacule la probabilité pour chaque lot, de manière à ce que ce soit assez cohérent :
1 gagnant pour le lot de 1 place (soit 1/6 = probabilité 17%)
3 gagnants pour le lot de 2 place (soit 3/25 = probabilité 12%)
1 gagnant pour le lot de 3 place (soit 1/12 = probabilité 8%)
5 gagnants pour le lot de 4 place (soit 5/42 = probabilité 12%)

Dans ce cas, la proba de gagner pour chaque lot est comprise entre 8% et 17%... ce qui reste raisonnable.

Ensuite, la macro fait un tirage au sort classique... 1 parmi 6 qui ont le critère "1 place", 3 parmi 25 qui ont le critère "2 places", etc...

Certe, ce n'est pas complètement aléatoire, mais bon...

Qu'en pensez-vous ?
 
J

jim

Guest
Voilà, l'illustration du message précédent, maintenant, je vais faire mon tirage aléatoire, et là...

...là....

J'ai besoin d'aide !
 

Pièces jointes

  • jimtiragecomplexe02.zip
    12.1 KB · Affichages: 22

Discussions similaires

Statistiques des forums

Discussions
312 300
Messages
2 087 008
Membres
103 429
dernier inscrit
PhilippeH