Initiation au Lua avec Scribunto/Exercices/Sur les fonctions mathématiques
Exercice 7-1
modifierÉcrire une fonction p.choisit qui choisit une image au hasard parmi 10 images et l'affiche. À chaque purge du cache de cette page le visiteur devra voir une image différente dans la solution ci-dessous.
Pour avoir une image différente à chaque exécution du programme, nous alimenterons la fonction math.randomseed avec le temps d'exécution du calcul d'une expression mathématique. Comme nous fonctionnons sur un système multitâche, le temps d'exécution peut être très différent selon la charge du processeur. Nous utiliserons la fonction os.clock qui nous donne le temps CPU en secondes avant et après le calcul de l'expression. En faisant la différence des deux temps et en multipliant le résultat par 100 000 000, nous obtenons un nombre compatible avec les besoins de la fonction math.randomseed. Il suffira ensuite d'appeler la fonction math.random avec pour paramètre 10 pour obtenir un nombre pseudo-aléatoire entre 1 et 10 et sélectionner, à l'aide de ce nombre, une image parmi 10.
Le programme suivant se trouve dans le module:Maths
local p = {}
function p.choisit(frame)
local repere, temps
temps = os.clock()
repere = (math.sqrt(7) - 2)^3
temps = os.clock() - temps
temps = temps*100000000
math.randomseed(temps)
repere = math.random(10)
if repere == 1 then return "[[Fichier:(Rakhi flower) Passiflora 'Soi Fah' at VUDA park in Visakhapatnam.jpg|400px]]"
elseif repere == 2 then return "[[Fichier:0 Grille du Théatre royal de Mons.JPG|400px]]"
elseif repere == 3 then return "[[Fichier:11-07-31-helsinki-by-RalfR-082.jpg|400px]]"
elseif repere == 4 then return "[[Fichier:12-09-11-moorbad-freienwalde-51.jpg|400px]]"
elseif repere == 5 then return "[[Fichier:12-11-01-anif-by-RalfR-27.jpg|400px]]"
elseif repere == 6 then return "[[Fichier:13-03-30 Paaspop Liptease 06.jpg|400px]]"
elseif repere == 7 then return "[[Fichier:131221 Sandanbeki Shirahama Wakayama pref Japan01bs5.jpg|400px]]"
elseif repere == 8 then return "[[Fichier:14-45-34-f-bois-d-oye.jpg|400px]]"
elseif repere == 9 then return "[[Fichier:15-31-55-lestes.jpg|400px]]"
elseif repere == 10 then return "[[Fichier:20070430-Garten-hornisse2.jpg|400px]]"
end
end
return p
{{#invoke:Maths|choisit}} nous donne :
Pour purger le cache d'une page, vous pouvez rajouter le gadget correspondant en cliquant sur préférence, gadget et dans le paragraphe Onglets supplémentaires en haut de page, sélectionner : Ajouter un onglet permettant de purger le cache d'une page et enregistrer les préférences en bas de page. Vous pouvez aussi, plus simplement, cliquer sur Mofifier le wikicode et, sans rien modifier, cliquer sur Enregistrer. L'image devrait changer sauf si le hasard fait que vous retombiez sur la même.
Exercice 7-2
modifier(à compléter)
Cette solution n'a pas été rédigée. Vous pouvez le faire en modifiant le paramètre « contenu
» du modèle. Comment faire ?
Exercice 7-3
modifier(à compléter)
Cette solution n'a pas été rédigée. Vous pouvez le faire en modifiant le paramètre « contenu
» du modèle. Comment faire ?
Exercice 7-4
modifier(à compléter)
Cette solution n'a pas été rédigée. Vous pouvez le faire en modifiant le paramètre « contenu
» du modèle. Comment faire ?