# Shared model: concentrations are log-normal; values below the limit of detection (LOD, 5 pg/mL) are reported
# only as "< LOD" (detected = 0). Log-SD 0.8.
import numpy as np
LOD = 5.0
def simulate(rng, n, median, sdlog=0.8):
    x = np.exp(np.log(median) + rng.normal(0, sdlog, n))
    return np.where(x < LOD, LOD, x), (x >= LOD).astype(int)
