random

Inteiros, doubles, escolhas e strings aleatórias via biblioteca C do sistema.

import random
Nota: Disponível no Bern 0.1.2 e acima. A biblioteca detecta o SO automaticamente e vincula a biblioteca C apropriada (msvcrt.dll no Windows, libc.so.6 em sistemas tipo Unix), semeando o gerador uma vez na importação.

Números aleatórios

get_random_int() → int

Um inteiro aleatório não-negativo do rand() do runtime C.

get_random_int()
-- Saída: (algum inteiro aleatório)

-- uma rolagem de dado em [1, 6]
1 + (get_random_int() % 6)
-- Saída: (1 a 6)
get_random_double() → double

Um double aleatório no intervalo [0, 1).

get_random_double()
-- Saída: (ex.: 0.4172...)
get_random_number() → número

Um int aleatório ou um double aleatório, escolhido ao acaso.

get_random_number()
-- Saída: (um int ou um double)

Seleção aleatória

random_choice(lista) → elemento

Um elemento uniformemente aleatório de uma lista (ou conjunto).

random_choice(["maçã", "banana", "cereja"])
-- Saída: (uma das três)

Strings aleatórias

get_random_string(comprimento) → string

Uma string alfanumérica aleatória do comprimento pedido.

get_random_string(10)
-- Saída: "aB3xK9mP2q"   (exemplo)

Juntando tudo

Combine seleção e geração de números para construir um gerador de dados de exemplo:

Gerando um registro de usuário aleatório

import random
import strings

first_names = ["Ana", "Bob", "Cia", "Dan"]

def random_user() do
    name = random_choice(first_names)
    age  = 18 + (get_random_int() % 50)
    id   = get_random_string(6)
    return name + " (" + from_int(age) + ") #" + id
end

random_user()
-- Saída: "Cia (34) #k2Mx9q"   (exemplo)

Ou sorteie repetidamente um índice aleatório - aqui escolhendo três amostras:

Sorteando várias amostras

import core
import random

deck = [1..52]
hand = map([1..3], \_ -> random_choice(deck))
hand
-- Saída: [27, 4, 51]   (exemplo)