De module random1 uit de Python Standard Library2 kan onder andere gebruikt worden om willekeurige getallen te genereren. De functie random() uit deze module genereert een willekeurig reƫel getal uit het interval $$[0, 1[$$. De functie randint(a, b) kan dan weer gebruikt worden om een willekeurig geheel getal te genereren uit het interval $$[a, b]$$. Onderstaande interactieve Python sessie geeft aan de hand van enkele voorbeelden aan hoe je de functies uit de module random kunt gebruiken.
>>> import random
>>> help(random.random)
Help on built-in function random:
random(...)
random() -> x in the interval [0, 1).
>>> random.random()
0.954131645221452
>>> random.random()
0.3548429482674793
>>> help(random.randint)
Help on method randint in module random:
randint(self, a, b) method of random.Random instance
Return random integer in range [a, b], including both end points.
>>> random.randint(3, 10)
5
>>> random.randint(3, 10)
8
Volgens onderzoek aan een Engelse universiteit speelt de volgorde van de letters in een woord geen rol, zolang de eerste en de laatste letter maar op de juiste plaats staan. De overige letters kunnen willekeurig door elkaar staan, zonder dat daarbij de leesbaarheid verloren gaat. Dit is een gevolg van het feit dat we niet elke letter afzonderlijk lezen, maar de woorden als een geheel.
Dit betekent dus dat de voorgaande paragraaf nog perfect leesbaar zou moeten zijn als de woorden op de volgende manier worden vervormd:
Vlogens oeoednrzk aan een Elgense usnrivteieit seeplt de vrdoogle van de letters in een woord geen rol, zlaong de erstee en de lttaase letter maar op de juiste platas saatn. De ovirege lertets knnuen wliueilekrg door ealkar staan zodner dat draibaj de lisaeraeehbd vleorern gaat. Dit is een govleg van het fiet dat we niet elke lteter aeordijzfnlk lzeen, maar de wroedon als een geeehl.
Schrijf een functie vervorm_woord waaraan een woord moet doorgegeven worden. De functie moet een vervormde versie van het gegeven woord teruggeven, die voldoet aan de volgende voorwaarden:
de eerste letter van het vervormde woord is gelijk aan de eerste letter van het originele woord
de laatste letter van het vervormde woord is gelijk aan de laatste letter van het originele woord
de middelste letters van het vervormde woord (alles behalve de eerste en de laatste letter) vormen een willekeurig anagram (een willekeurige permutatie) van de middelste letters van het originele woord
Om een willekeurige permutatie $$p$$ van een tekenreeks $$s$$ te bepalen, moet je op de volgende manier te werk gaan:
de permutatie $$p$$ is initieel gelijk aan de lege string
selecteer een willekeurige letter uit $$s$$
voeg de geselecteerde letter achteraan toe aan $$p$$
verwijder de geselecteerde letter uit $$s$$
herhaal voorgaande procedure vanaf stap (b) totdat $$s$$ geen letters meer bevat
Dit levert bijvoorbeeld de volgende reeks van stappen op die het woord geologie omzet naar de willekeurige permutatie egiogole, waarbij de geselecteerde letter van $$s$$ in elke stap onderlijnd wordt:
$$s$$ | $$\rightarrow$$ | $$p$$ |
---|---|---|
geologie | ||
gologie | e | |
ologie | eg | |
ologe | egi | |
olge | egio | |
ole | egiog | |
le | egiogo | |
e | egiogol | |
egiogole |
Gebruik de functie vervorm_woord om een functie vervorm_zin te schrijven waaraan een zin moet doorgegeven worden. De functie vervorm_zin moet alle woorden van de gegeven zin vervormen volgens de bovenstaande procedure, en deze vervormde zin als resultaat teruggeven. De woorden van de gegeven zin worden gevormd door de langst mogelijke opeenvolgingen van letters. Alle karakters die geen letter voorstellen moeten op hun oorspronkelijke plaats blijven staan in de vervormde zin. Zo moet de functie voor de gegeven zin "Change, america needs change!" de vervormde zin "Chnage, ameicra nedes canhge!" teruggeven. Merk op dat dit voorbeeld twee alternatieve vervormingen van het woord change bevat.
>>> vervorm_woord('monty')
'motny'
>>> vervorm_woord('python')
'pothyn'
>>> vervorm_zin('Nudge, nudge, wink, wink. Know what I mean?')
'Nugde, ngude, wnik, wnik. Konw what I maen?'
>>> vervorm_zin('Nobody expects the Spanish inquisition!')
'Nbdooy epxtces the Snpasih iiiitqnsoun!'
>>> vervorm_zin("He's not the Messiah - he's a very naughty boy.")
"He's not the Mseasih - he's a vrey nhaugty boy."