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 random. Les funcions d’aquest mòdul més útils per a dissenyar jocs són les següents:

  • 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:

    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 random hi ha moltes altres funcions per a obtenir nombres reals a l’atzar seguint distribucions de tot tipus (random.uniform(), random.gauss(), random.betavariate() …)

  • random.randrange() i random.randint(): Per a obtenir nombres enters a l’atzar. Per exemple, si volem simular que tirem un dau:

    valor = random.randrange(1,7)
    
  • 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:

    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 random.sample().

  • random.shuffle(): per a barrejar aleatòriament (una llista). Per exemple:

    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