Bonjour,

Voilà ma question : un groupe de 50 coureurs, portant des dossards numérotés de 1 à 50, participe à une course cycliste qui comprend 10 étapes, et au cours de laquelle aucun abandon n'est constaté.
A la fin de chaque étape, un groupe de 5 coureurs est choisi au hasard pour subir un contrôle antidopage. Ces désignations de 5 coureurs à l'issue de chacune des étapes sont indépendantes. Un même coureur peut donc être contrôlé à l'issue de plusieurs étapes.
Ma 1ère question : à l'issue de chaque étape, combien peut-on former de groupes différents de 5 coureurs ?
Ma 2ème question : écrire un algorithme permettant de déterminer de manière aléatoire un groupe de 5 coureurs qui vont être contrôlés à l'issue de l'étape. Merci de m'aider, c'est urgent.

1

Réponses

2014-10-31T13:07:31+01:00
Bonjour,
1) C(5,50)=50*49*48*47*46/(5*4*3*2*1)
2)
On forme un tableau des nombres de 1 à 50.
On effectue 5 fois ceci:
i est le numéro de l'étape (de l'itération)
x est un nombre aléatoire entre i et 50
On permute l'élément d'indice i et l'élément d'indice x
Les 5 nombres aléatoires sont les 5 premières composantes du tableau.

Ce qui donne en QB64 (basic)

CONST nb = 50
DIM T(nb) AS INTEGER, i AS INTEGER, j AS INTEGER
RANDOMIZE TIMER
FOR i = 1 TO nb: T(i) = i: NEXT i
FOR i = 1 TO 5
    x = INT((nb - i + 1) * RND + i)
    SWAP T(i), T(x)
NEXT i
FOR i = 1 TO 5
    PRINT T(i),
NEXT i
END