diff --git a/FastRng/Double/Distributions/Exponential.cs b/FastRng/Double/Distributions/Exponential.cs index 21cc899..6a44ee0 100644 --- a/FastRng/Double/Distributions/Exponential.cs +++ b/FastRng/Double/Distributions/Exponential.cs @@ -22,7 +22,7 @@ namespace FastRng.Double.Distributions } } - public async Task GetDistributedValue(CancellationToken token) + public async ValueTask GetDistributedValue(CancellationToken token) { if (this.Random == null) return 0; diff --git a/FastRng/Double/Distributions/Gamma.cs b/FastRng/Double/Distributions/Gamma.cs index 017cd12..65200b7 100644 --- a/FastRng/Double/Distributions/Gamma.cs +++ b/FastRng/Double/Distributions/Gamma.cs @@ -24,7 +24,7 @@ namespace FastRng.Double.Distributions public double Scale { get; set; } = 1; - public async Task GetDistributedValue(CancellationToken token) + public async ValueTask GetDistributedValue(CancellationToken token) { if (this.Random == null) return 0; diff --git a/FastRng/Double/Distributions/IDistribution.cs b/FastRng/Double/Distributions/IDistribution.cs index 8cd4d75..779f12c 100644 --- a/FastRng/Double/Distributions/IDistribution.cs +++ b/FastRng/Double/Distributions/IDistribution.cs @@ -7,6 +7,6 @@ namespace FastRng.Double.Distributions { public IRandom Random { get; set; } - public Task GetDistributedValue(CancellationToken token); + public ValueTask GetDistributedValue(CancellationToken token); } } \ No newline at end of file diff --git a/FastRng/Double/Distributions/Normal.cs b/FastRng/Double/Distributions/Normal.cs index b2238bb..efb4e35 100644 --- a/FastRng/Double/Distributions/Normal.cs +++ b/FastRng/Double/Distributions/Normal.cs @@ -24,7 +24,7 @@ namespace FastRng.Double.Distributions } } - public async Task GetDistributedValue(CancellationToken token = default) + public async ValueTask GetDistributedValue(CancellationToken token = default) { if (this.Random == null) return 0; diff --git a/FastRng/Double/Distributions/Uniform.cs b/FastRng/Double/Distributions/Uniform.cs index 3dc852f..79b9d42 100644 --- a/FastRng/Double/Distributions/Uniform.cs +++ b/FastRng/Double/Distributions/Uniform.cs @@ -7,6 +7,6 @@ namespace FastRng.Double.Distributions { public IRandom Random { get; set; } - public async Task GetDistributedValue(CancellationToken token = default) => this.Random == null ? 0 : await this.Random.GetUniform(token); + public async ValueTask GetDistributedValue(CancellationToken token = default) => this.Random == null ? 0 : await this.Random.GetUniform(token); } } \ No newline at end of file diff --git a/FastRng/Double/IRandom.cs b/FastRng/Double/IRandom.cs index e832403..54f1511 100644 --- a/FastRng/Double/IRandom.cs +++ b/FastRng/Double/IRandom.cs @@ -6,13 +6,13 @@ namespace FastRng.Double { public interface IRandom { - public Task GetUniform(CancellationToken cancel = default); + public ValueTask GetUniform(CancellationToken cancel = default); - public Task NextNumber(uint rangeStart, uint rangeEnd, IDistribution distribution, CancellationToken cancel = default); + public ValueTask NextNumber(uint rangeStart, uint rangeEnd, IDistribution distribution, CancellationToken cancel = default); - public Task NextNumber(ulong rangeStart, ulong rangeEnd, IDistribution distribution, CancellationToken cancel = default); + public ValueTask NextNumber(ulong rangeStart, ulong rangeEnd, IDistribution distribution, CancellationToken cancel = default); - public Task NextNumber(float rangeStart, float rangeEnd, IDistribution distribution, CancellationToken cancel = default); + public ValueTask NextNumber(float rangeStart, float rangeEnd, IDistribution distribution, CancellationToken cancel = default); public void StopProducer(); } diff --git a/FastRng/Double/MultiThreadedRng.cs b/FastRng/Double/MultiThreadedRng.cs index d85655d..3518eef 100644 --- a/FastRng/Double/MultiThreadedRng.cs +++ b/FastRng/Double/MultiThreadedRng.cs @@ -133,9 +133,9 @@ namespace FastRng.Double #region Implementing interface - public async Task GetUniform(CancellationToken cancel = default) => await this.channelRandomUniformDistributedDouble.Reader.ReadAsync(cancel); + public async ValueTask GetUniform(CancellationToken cancel = default) => await this.channelRandomUniformDistributedDouble.Reader.ReadAsync(cancel); - public async Task NextNumber(uint rangeStart, uint rangeEnd, IDistribution distribution, CancellationToken cancel = default) + public async ValueTask NextNumber(uint rangeStart, uint rangeEnd, IDistribution distribution, CancellationToken cancel = default) { if (rangeStart > rangeEnd) { @@ -151,7 +151,7 @@ namespace FastRng.Double return (uint) ((distributedValue * range) + rangeStart); } - public async Task NextNumber(ulong rangeStart, ulong rangeEnd, IDistribution distribution, CancellationToken cancel = default(CancellationToken)) + public async ValueTask NextNumber(ulong rangeStart, ulong rangeEnd, IDistribution distribution, CancellationToken cancel = default(CancellationToken)) { if (rangeStart > rangeEnd) { @@ -167,7 +167,7 @@ namespace FastRng.Double return (ulong) ((distributedValue * range) + rangeStart); } - public async Task NextNumber(float rangeStart, float rangeEnd, IDistribution distribution, CancellationToken cancel = default(CancellationToken)) + public async ValueTask NextNumber(float rangeStart, float rangeEnd, IDistribution distribution, CancellationToken cancel = default(CancellationToken)) { if (rangeStart > rangeEnd) {