diff --git a/src/Numerics/Numerics.csproj b/src/Numerics/Numerics.csproj index b6be5cb8..5d2cb2e9 100644 --- a/src/Numerics/Numerics.csproj +++ b/src/Numerics/Numerics.csproj @@ -2,7 +2,7 @@ Library - net5.0;net461;net48;netstandard2.0 + net5.0;netcoreapp2.1;net461;net48;netstandard2.1;netstandard2.0 MathNet.Numerics MathNet.Numerics true diff --git a/src/Numerics/Random/RandomSource.cs b/src/Numerics/Random/RandomSource.cs index 7fccea5e..8718c859 100644 --- a/src/Numerics/Random/RandomSource.cs +++ b/src/Numerics/Random/RandomSource.cs @@ -470,6 +470,27 @@ namespace MathNet.Numerics.Random DoSampleBytes(buffer); } +#if NETCOREAPP2_1_OR_GREATER || NETSTANDARD2_1_OR_GREATER + /// + /// Fills the elements of a specified array of bytes with random numbers. + /// + /// An array of bytes to contain random numbers. + public sealed override void NextBytes(Span buffer) + { + if (_threadSafe) + { + lock (_lock) + { + DoSampleBytes(buffer); + } + + return; + } + + DoSampleBytes(buffer); + } +#endif + /// /// Returns a random number between 0.0 and 1.0. /// @@ -511,6 +532,18 @@ namespace MathNet.Numerics.Random } } +#if NETCOREAPP2_1_OR_GREATER || NETSTANDARD2_1_OR_GREATER + /// + /// Fills the elements of a specified array of bytes with random numbers in full range, including zero and 255 (). + /// + protected virtual void DoSampleBytes(Span buffer) + { + var temp = new byte[buffer.Length]; + DoSampleBytes(temp); + temp.CopyTo(buffer); + } +#endif + /// /// Returns a random N-bit signed integer greater than or equal to zero and less than 2^N. /// N (bit count) is expected to be greater than zero and less than 32 (not verified).