INF 441 - TD 0 
Tirage d'une permutation aléatoire

Le but de ce TD est de vérifier que votre machine est bien configurée et que vous êtes capable d'écrire et d'exécuter un petit programme, d'une part en Java, d'autre part en OCaml.

0. L'exercice

L'exercice, qui se veut très simple, est le suivant :

  1. Définissez une méthode (ou une fonction) identity qui, étant donné un entier n, alloue un tableau a de n éléments entiers, l'initialise de façon à ce qu'il contienne les entiers de 1 à n, et renvoie ce tableau.
  2. Définissez une méthode (ou une fonction) shuffle qui, étant donné un tableau d'entiers (de longueur arbitraire), en permute les éléments de façon aléatoire. Vous utiliserez le mélange de Fisher-Yates.
  3. Définissez une méthode (ou une fonction) print qui, étant donné un tableau d'entiers (de longueur arbitraire), en affiche le contenu sur la sortie standard.
  4. Combinez le tout pour écrire un programme complet qui, pour n=20, affiche sur la sortie standard une permutation aléatoire des entiers de 1 à n.

1. En Java

En principe, vous connaissez déjà tous les éléments nécessaires. On rappelle que l'affichage sur la sortie standard peut se faire à l'aide des méthodes System.out.print et System.out.println. On obtient un entier aléatoire à l'aide de la méthode int nextInt (int bound) de la classe Random. Ou bien, on peut employer la fonction Math.random() qui produit un nombre flottant compris entre 0.0 au sens large et 1.0 au sens strict.

Sous Eclipse, une fois votre programme écrit, exécutez-le à l'aide de la commande Run et vérifiez que l'affichage se fait bien dans l'onglet Console.

2. En OCaml

La syntaxe des définitions de fonctions, ainsi que les opérations élémentaires sur les tableaux, sont rappelées dans la fiche OCaml en trois pages. L'affichage sur la sortie standard peut se faire à l'aide des fonctions print_int, print_string et print_endline. On obtient un entier aléatoire à l'aide de la fonction Random.int du module Random.

Si vous n'êtes pas assez familier d'OCaml pour faire cet exercice, contentez-vous d'écrire le programme let () = print_endline "Hello world!" et de l'exécuter, comme décrit ci-dessous.

Sous Emacs :

Sous Eclipse avec OcaIDE: