diff --git a/src/Numerics/Numerics.csproj b/src/Numerics/Numerics.csproj index 1aa53dd2d..facde6f5e 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 fea612872..9e8cddc40 100644 --- a/src/Numerics/Random/RandomSource.cs +++ b/src/Numerics/Random/RandomSource.cs @@ -470,6 +470,27 @@ public sealed override void NextBytes(byte[] buffer) 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 @@ protected virtual void DoSampleBytes(byte[] buffer) } } +#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).