Travail pratique: génération de nombres aléatoires

But du travail

Expérimenter avec les générateurs de nombres aléatoires.

Ce travail peut être fait en équipe de 2 personnes.

Quoi?

Nous allons expérimenter avec divers générateurs de nombres aléatoires et tenter d'évaluer leurs performances.

Comment?

Étape 1: connaissances de base sur la génération de nombres aléatoires

Vous devez d'abord vous familiariser avec la génération des nombres aléatoires: lire les 4 articles (1-4) en références dans le plan du cours.

Étape 2: mise en oeuvre de générateurs

On vous demande de mettre en oeuvre deux générateurs de nombres aléatoires: congruence linéaire et récurrence linéaire à deux termes. Les coefficients, modules et paramètres de récurrence doivent être facilement configurable.

Étape 3: étude comparative des générateurs

On désire comparer les deux générateurs mis en oeuvre entre-eux et avec le générateur par défaut de Python 3.x.

Critères: utiliser le critère de précision Monte-Carlo, le critère d'uniformité et le temps CPU. Pour le premier, utiliser le problème de l'estimation par la méthode de Monte-Carlo de l'aire d'un cercle de diamètre 0.8, inscrit dans le carré [0,1]x[0,1]. Pour le second, utiliser une grille 100x100 afin de comparer la répartition de l'écart par rapport au nombre de valeurs devant se retrouver dans chaque case: (N/10000). Faire le second test pour un décalage de un et de deux dans la construction des couples.

Finalement, faire des tests avec au moins trois cas de paramétrisation des générateurs construits. Vous référer aux articles de M. L'écuyer. Par exemple, utiliser les couples suivants pour les paramètres (a,m) de la congruence linéaire: (1716,8191), (17364,65521), (29223,131071).

Étape 4: étude de sensibilité

Faire des tests avec des choix arbitraires des paramètres (a,m) de la congruence linéaire. Comment est-ce que les résultats se comparent avec ceux des tests précédents?

Est-ce que de classer les résultats des tests en fonction de la période des générateurs montre une relation particulière?

Selon cette étude, quel est le meilleur choix de générateur pour la simulation? Justifier.

Y a-t-il un avantage à utiliser un générateur "maison" versus celui qui disponible par défaut dans un langage de programmation?

Quoi remettre?

Un rapport en pdf, avec le code Python annexé. Tout ça dans un fichier zip envoyé électroniquement au professeur (voir date de remise dans le plan de cours). Assurez-vous de bien identifier votre courriel.