Inscription / Connexion Nouveau Sujet
Niveau exercices
Partager :

Le collecteur d'objets

Posté par
flight
29-09-25 à 23:17

Bonsoir

Je vous propose l'exercice suivant  :

Un collecteur parcourt en boucle trois étapes A, B, C, séparées par 30 km, 50 km et 140 km. Il part de A et ne s'arrête qu'aux étapes. À chaque passage, il collecte :

En A : 2 objets avec probabilité 4/7, sinon 1 objet.

En B : 2 objets avec probabilité 2/3, sinon 3 objets.

En C : 3 objets avec probabilité 7/12, sinon 6 objets.

Il poursuit jusqu'à ce que la distance totale parcourue dépasse 1000 km.

Calculer la valeur moyenne du nombre total d'objets collectés lorsque la distance dépasse 1000 km.

Écrire un algorithme  qui simule l'expérience  et vérifie le résultat théorique.

Posté par
dpi
re : Le collecteur d'objets 30-09-25 à 08:59

Bonjour;
Le circuit est "circulaire"

 Cliquez pour afficher

Posté par
flight
re : Le collecteur d'objets 30-09-25 à 13:08

Bonjour dpi.... ce n'est pas la bonne réponse ...

Posté par
candide2
re : Le collecteur d'objets 30-09-25 à 16:50

Bonjour,

 Cliquez pour afficher

Posté par
dpi
re : Le collecteur d'objets 30-09-25 à 17:37

J'ai fait  une moyenne de trop ...

 Cliquez pour afficher

Posté par
candide2
re : Le collecteur d'objets 30-09-25 à 17:55

Bonjour,

 Cliquez pour afficher

Posté par
flight
re : Le collecteur d'objets 30-09-25 à 20:58

37,2 de dpi   n'est pas bon , le  40,8 de candide oui

Posté par
flight
re : Le collecteur d'objets 30-09-25 à 21:02

...j'y connais rien en python , car je programme en vba , voici mon code :

Sub ca_tourne()
Dim p, c, d, e, q As Double
Randomize
 t = Array(30, 50, 140) 'parcours d'un collecteur sur un cercle contenant 3 etapes A, B et C séparées de 30,50 et 140 kms
 e = 0
 q = 0
 Do
 e = e + 1
   i = 0  ' compteur modulo sur le trajet circulaire
   c = 0  'compte le cumul des objects collectés
   d = 0  ' compte le cumul de distance parcourue
   'distribution des objets :départ au point A
  Do
   Select Case i Mod 3
     Case Is = 0
       p = Rnd
         If p < 4 / 7 Then
           c = c + 2 'collecte 2 objets
            Else
           c = c + 1 'sinon collecte 1 objet
         End If
          d = d + t(i Mod 3)
    Case Is = 1
       p = Rnd
         If p < 2 / 3 Then
           c = c + 2
            Else
           c = c + 3
         End If
          d = d + t(i Mod 3)
     Case Is = 2
       p = Rnd
         If p < 7 / 12 Then
           c = c + 3
            Else
           c = c + 6
         End If
          d = d + t(i Mod 3)
    End Select
    i = i + 1
  Loop Until d > 1000
    'fin de la distribution
  q = q + c
 Loop Until e = 10000
 
 Debug.Print q / e ' retourne 40,77 objets collectés quand le cumul de distance depasse  1000 km
 
 
End Sub

Posté par
Zormuche
re : Le collecteur d'objets 01-10-25 à 00:21

Bonsoir
Voici un petit code compact

 Cliquez pour afficher

On trouve bien environ 40.77

Petit graphique de l'évolution de la moyenne après 3 000 000 essais (l'abscisse est logarithmique pour mieux voir le détail de la courbe)
 Cliquez pour afficher

Posté par
Zormuche
re : Le collecteur d'objets 01-10-25 à 00:24

J'ai oublié un détail crucial dans mon code, qui finalement n'a aucune incidence sur le résultat. Il faut sortir de la boucle dès que la distance parcourue dépasse 1000, et ne pas attendre d'avoir forcément réalisé le cycle A->B->C en entier. Ca n'a aucune incidence puisque la distance 1000 est dépassée juste après être passé en C.

La boucle deviendrait alors

 Cliquez pour afficher

Posté par
dpi
re : Le collecteur d'objets 01-10-25 à 08:41

Tout dépend du départ:

Citation :
Il part de A et ne s'arrête qu'aux étapes. À chaque passage, il collecte :

On peut comprendre qu'il ne récolte des objets qu'à l'étape B...

Posté par
candide2
re : Le collecteur d'objets 01-10-25 à 10:40

La différence entre mon calcul et la ma simulation était due à une erreur d'indentation dans la simulation.

Cela corrigé, j'ai maintenant des valeurs cohérentes entre le calcul et la simulation.

Le programme corrigé est :

[quoteimport random

total = 0
objet = 0
km=0
for k in range(0,100000):
   total = total + objet
   objet = 0
   km = 0
   x = random.random()
   q = 2
   if (x>4/7) :
       q = 1
   test = 0
   objet = objet + q
   while test == 0:
       km = km + 30
       if km > 1000:
           test = 1
       if test == 0:
         x = random.random()
         q = 2
         if (x>2/3) :
            q = 3
         objet = objet + q
    
       km = km+50
       if km > 1000:
           test = 1
       if test == 0:
          x = random.random()
          q = 3
          if (x>7/12) :
            q = 6
          objet = objet + q

       km = km+140
       if km > 1000:
           test = 1
       if test == 0:
           x = random.random()
           q = 2
           if (x>4/7) :
              q = 1
           objet = objet + q
       if test == 1:
          total = total + objet  
   objet = 0
print (total/100000)



Et la valeur sortie est alors :
40.77198

Posté par
dpi
re : Le collecteur d'objets 01-10-25 à 17:03

Nous sommes d'accord qu'en partant de A ,la première collecte est en B
Depuis le début ,je stoppais à 1000 alors que vous allez à 1100
Dans ce cas,voici mon résultat définitif
Le collecteur d\'objets

Posté par
candide2
re : Le collecteur d'objets 01-10-25 à 17:44

dpi @ 01-10-2025 à 17:03

Nous sommes d'accord qu'en partant de A ,la première collecte est en B
Depuis le début ,je stoppais à 1000 alors que vous allez à 1100
Dans ce cas,voici mon résultat définitif
Le collecteur d\'objets


Bonjour,

Ben non, on ne va pas jusque 1100

on démarre en A (km = 0)
puis on passe par BCABCABCABCABC, on est alors à 960 km
On ne peut pas faire la récolte suivante qui irait jusque 1100 km

Pour le voyage total, on passe donc 5 fois à chaque poste (A,B et C)

La moyenne de colis aux étapes A est 2*4/7 + 3/7 * 1 = 11/7
La moyenne de colis aux étapes B est 2*2/3 + 1/3 * 3 = 7/3
La moyenne de colis aux étapes C est 3*7/12 + 5/12 * 6 = 51/12 = 17/4

La moyenne de colis sur un trajet qui s'arrête à 1000 km est donc :

5 * (11/7 + 7/3 + 17/4) = 40,77

Posté par
dpi
re : Le collecteur d'objets 02-10-25 à 08:54

On arrive à 960  km en C  ok  . Par quel miracle  arrive -t- on à 1000 km?
De plus ,je me demande pourquoi mon résultat est exactement  le tien?

Posté par
candide2
re : Le collecteur d'objets 02-10-25 à 09:56

dpi @ 02-10-2025 à 08:54

On arrive à 960  km en C  ok  . Par quel miracle  arrive -t- on à 1000 km?
De plus ,je me demande pourquoi mon résultat est exactement  le tien?


C'est simple, quand on arrive à 960 km pour faire une collecte au point C, on repart vers le point A ...
Mais comme le point A est éloigné de 140 km, on ne peut pas y arriver. On atteint donc 1000 km sur le chemin entre C et A, sans atteindre A et donc sans récolter les objets  de "non passage" en A

Pourquoi les mêmes résultats ?
Parce que tu oublies de prendre les objets au point de départ au point A ... et puis que tu continues jusque 1100 km au lieu des 1000 km imposés dans l'énoncé, et que donc tu prends les objets du point A après 1100 km.
Ces 2 erreurs se compensent, tu oublies les objets en A au départ mais tu prends une étape A en trop à 1100 km.



Posté par
dpi
re : Le collecteur d'objets 02-10-25 à 10:03

j'avais posé la question pour le départ ...

Citation :
Tout dépend du départ:
Citation :
Il part de A et ne s'arrête qu'aux étapes. À chaque passage, il collecte :

On peut comprendre qu'il ne récolte des objets qu'à l'étape B...


De toute façon on termine



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !