using System.Threading; using System.Threading.Tasks; using FastRng.Double.Distributions; namespace FastRng.Double { public interface IRandom { public ValueTask GetUniform(CancellationToken cancel = default); public ValueTask NextNumber(uint rangeStart, uint rangeEnd, IDistribution distribution, CancellationToken cancel = default); public ValueTask NextNumber(ulong rangeStart, ulong rangeEnd, IDistribution distribution, CancellationToken cancel = default); public ValueTask NextNumber(double rangeStart, double rangeEnd, IDistribution distribution, CancellationToken cancel = default); public ValueTask NextNumber(IDistribution distribution, CancellationToken cancel = default); public void StopProducer(); } }