Source code for relsad.utils.random

"""
This module contains random utilities
"""

import numpy as np

from relsad.Time import Time


[docs]def get_random_instance(seed: int = None): """ Return a numpy random instance with optional seed Parameters ---------- seed : int Random seed Returns ------- random_instance : numpy.random.Generator Random instance generator """ random_instance = np.random.default_rng(seed) return random_instance
[docs]def random_choice(random_instance: np.random.Generator, p_true: float): """ Returns random choice based on uniform probability distribution Parameters ---------- random_instance : np.random.Generator Instance of a random generator p_true : float The probability of true Returns ------- choice : bool Random choice based on uniform probability distribution """ if random_instance is None: random_instance = get_random_instance() choice = random_instance.random() < p_true return choice
[docs]def convert_yearly_fail_rate(fail_rate_per_year: float, dt: Time): """ Returns the failure rate of the time increment, dt, based on the given yearly failure rate Parameters ---------- fail_rate_per_year : float The failure rate dt : Time The current time step Returns ------- fail_rate : float The converted failure rate for time increment, dt """ fail_rate = min(fail_rate_per_year * dt.get_years(), 1) return fail_rate