Aleatorietat ============ És habitual que un joc incorpori factors d'aleatorietat, per a fer que les partides siguin diferents cada cop que es juga i fer-los més amens. A tal fi, en informàtica s'utilitzen les tècniques de `generació de nombres pseudoaleatoris `_. Tots els llenguatges de programació disposen de la funcionalitat per a generar-ne; en Python, existeix el mòdul :py:mod:`random`. Les funcions d'aquest mòdul més útils per a dissenyar jocs són les següents: * :py:func:`random.random`: Retorna un nombre real entre 0 i 1 a l'atzar (distribució uniforme). Per exemple, si volem que diferents fragments del nostre codi s'executin amb una certa probabilitat, podem escriure alguna cosa com: .. code:: python p = random.random() if p < 0.1: # aquest fragment de codi s'executarà amb una probabilitat del 10% elif p < 0.5: # aquest fragment de codi s'executarà amb una probabilitat del 40% else: # aquest fragment de codi s'executarà amb una probabilitat del 50% Al mòdul :py:mod:`random` hi ha moltes altres funcions per a obtenir nombres reals a l'atzar seguint distribucions de tot tipus (:py:func:`random.uniform`, :py:func:`random.gauss`, :py:func:`random.betavariate` ...) * :py:func:`random.randrange` i :py:func:`random.randint`: Per a obtenir nombres enters a l'atzar. Per exemple, si volem simular que tirem un dau: .. code:: python valor = random.randrange(1,7) * :py:func:`random.choice`: Per a triar un element a l'atzar d'entre uns quants. Per exemple, si volem triar un pal d'una baralla a l'atzar: .. code:: python pal_carta = random.choice(['oros', 'copes', 'espases', 'bastos']) Per a triar més d'un element d'una seqüència a l'atzar (sense repetir), disposem de :py:func:`random.sample`. * :py:func:`random.shuffle`: per a barrejar aleatòriament (una llista). Per exemple: .. code:: python digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] random.shuffle(digits) # la llista de dígits haurà quedat ordenada a l'atzar