[Python] How to generate discrete random waiting time

Discussão em 'Python' iniciado por Stack, Março 16, 2025.

  1. Stack

    Stack Membro Participativo

    This is how I generate random timing and determine which subperiods players can make a move.

    import numpy as np

    num_subperiods=6000
    updating_time=0.1 # in seconds
    players_per_group=2
    gap=2 # in seconds

    total_seconds = num_subperiods*updating_time
    draws = np.random.default_rng().exponential(scale=gap/updating_time,size=(players_per_group,num_subperiods))
    check_interval = draws < updating_time
    num_false = np.sum(check_interval)
    if num_false>0:
    draws[check_interval] =
    np.random.default_rng().exponential(scale=gap/updating_time,size=num_false)
    timing = np.cumsum(draws,axis=1)
    new_timing = timing.copy()
    new_timing[timing>num_subperiods]=num_subperiods
    bins = np.arange(0,num_subperiods)
    new_timing = np.digitize(new_timing,bins)
    is_revise = np.zeros((players_per_group,num_subperiods))
    np.put_along_axis(is_revise,new_timing-1,1,axis=1)
    is_revise[np.any(timing>num_subperiods,axis=1),num_subperiods-1]=0


    I am thinking to make it discrete, using updating_time as a unit. The other part of my code uses updating_time as a discrete interval, so exponential is not really consistent with that, though the original idea was to use a small updating_time to make it visually continuous.

    How should do I it? Using Geometric Distribution or Poisson Distribution? or I should stick to exponential?

    Continue reading...

Compartilhe esta Página