Giter VIP home page Giter VIP logo

litdex.security.rng's Introduction

Hi there ๐Ÿ‘‹

I'm dotnet developer especially C# and currently live in Indonesia.

litdex.security.rng's People

Contributors

dependabot-preview[bot] avatar madeyoga avatar restyled-io[bot] avatar shiroechi avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Forkers

madeyoga

litdex.security.rng's Issues

New version of Squares

The current implementation of Squares in
Litdex.Security.RNG 2.1.0 is from here.

But as of 23 Nomvember there's an update, please refer to this site

Add new method for IRNG

The current method in IRNG is:

  • AlgorithmName()
  • Reseed()
  • NextBoolean()
  • NextByte()
  • NextByte(byte lower, byte upper)
  • NextBytes(int length)
  • NextInt()
  • NextInt(uint lower, uint upper)
  • NextLong()
  • NextLong(ulong lower, ulong upper)
  • NextDouble()
  • NextDouble(double lower, double upper)

The new method is Choice.
So the new method is already in Random32 and Random64, but for more abstraction it will be included in IRNG.

Docfx: Invalid cref

Invalid cref value "!:System.Security.Cryptography.RNGCryptoServiceProvider"  for Reseed defined in ../Source/Security/RNG/IRNG.cs Line 20, ignored.
Invalid cref value "!:System.Boolean"  for NextBoolean defined in ../Source/Security/RNG/IRNG.cs Line 28, ignored.
Invalid cref value "!:System.Byte"  for NextByte defined in ../Source/Security/RNG/IRNG.cs Line 36, ignored.
Invalid cref value "!:System.Byte"  for NextByte defined in ../Source/Security/RNG/IRNG.cs Line 36, ignored.
Invalid cref value "!:System.Byte"  for NextByte defined in ../Source/Security/RNG/IRNG.cs Line 54, ignored.
Invalid cref value "!:System.Byte"  for NextByte defined in ../Source/Security/RNG/IRNG.cs Line 54, ignored.
Invalid cref value "!:ArgumentException"  for NextByte defined in ../Source/Security/RNG/IRNG.cs Line 54, ignored.
Invalid cref value "!:System.Byte"  for NextBytes defined in ../Source/Security/RNG/IRNG.cs Line 71, ignored.
Invalid cref value "!:ArgumentOutOfRangeException"  for NextBytes defined in ../Source/Security/RNG/IRNG.cs Line 71, ignored.
Invalid cref value "!:System.Byte"  for Fill defined in ../Source/Security/RNG/IRNG.cs Line 85, ignored.
Invalid cref value "!:ArgumentNullException"  for Fill defined in ../Source/Security/RNG/IRNG.cs Line 85, ignored.
Invalid cref value "!:System.UInt32"  for NextInt defined in ../Source/Security/RNG/IRNG.cs Line 111, ignored.
Invalid cref value "!:System.UInt32"  for NextInt defined in ../Source/Security/RNG/IRNG.cs Line 129, ignored.
Invalid cref value "!:System.UInt32"  for NextInt defined in ../Source/Security/RNG/IRNG.cs Line 129, ignored.
Invalid cref value "!:ArgumentException"  for NextInt defined in ../Source/Security/RNG/IRNG.cs Line 129, ignored.
Invalid cref value "!:System.UInt64"  for NextLong defined in ../Source/Security/RNG/IRNG.cs Line 137, ignored.
Invalid cref value "!:System.UInt64"  for NextLong defined in ../Source/Security/RNG/IRNG.cs Line 155, ignored.
Invalid cref value "!:System.UInt64"  for NextLong defined in ../Source/Security/RNG/IRNG.cs Line 155, ignored.
Invalid cref value "!:ArgumentException"  for NextLong defined in ../Source/Security/RNG/IRNG.cs Line 155, ignored.
Invalid cref value "!:System.Double"  for NextDouble defined in ../Source/Security/RNG/IRNG.cs Line 163, ignored.
Invalid cref value "!:System.Double"  for NextDouble defined in ../Source/Security/RNG/IRNG.cs Line 181, ignored.
Invalid cref value "!:System.Double"  for NextDouble defined in ../Source/Security/RNG/IRNG.cs Line 181, ignored.
Invalid cref value "!:ArgumentException"  for NextDouble defined in ../Source/Security/RNG/IRNG.cs Line 181, ignored.
Invalid cref value "!:ArgumentNullException"  for Choice defined in ../Source/Security/RNG/ISequence.cs Line 30, ignored.
Invalid cref value "!:ArgumentOutOfRangeException"  for Choice defined in ../Source/Security/RNG/ISequence.cs Line 30, ignored.
Invalid cref value "!:ArgumentNullException"  for Choice defined in ../Source/Security/RNG/ISequence.cs Line 54, ignored.
Invalid cref value "!:ArgumentOutOfRangeException"  for Choice defined in ../Source/Security/RNG/ISequence.cs Line 54, ignored.
Invalid cref value "!:ArgumentNullException"  for ChoiceAsync defined in ../Source/Security/RNG/ISequence.cs Line 78, ignored.
Invalid cref value "!:ArgumentOutOfRangeException"  for ChoiceAsync defined in ../Source/Security/RNG/ISequence.cs Line 78, ignored.
Invalid cref value "!:ArgumentNullException"  for ChoiceAsync defined in ../Source/Security/RNG/ISequence.cs Line 105, ignored.
Invalid cref value "!:ArgumentOutOfRangeException"  for ChoiceAsync defined in ../Source/Security/RNG/ISequence.cs Line 105, ignored.
Invalid cref value "!:ArgumentNullException"  for Choice defined in ../Source/Security/RNG/ISequence.cs Line 125, ignored.
Invalid cref value "!:ArgumentOutOfRangeException"  for Choice defined in ../Source/Security/RNG/ISequence.cs Line 125, ignored.
Invalid cref value "!:ArgumentNullException"  for Choice defined in ../Source/Security/RNG/ISequence.cs Line 149, ignored.
Invalid cref value "!:ArgumentOutOfRangeException"  for Choice defined in ../Source/Security/RNG/ISequence.cs Line 149, ignored.
Invalid cref value "!:ArgumentNullException"  for ChoiceAsync defined in ../Source/Security/RNG/ISequence.cs Line 173, ignored.
Invalid cref value "!:ArgumentOutOfRangeException"  for ChoiceAsync defined in ../Source/Security/RNG/ISequence.cs Line 173, ignored.
Invalid cref value "!:ArgumentNullException"  for ChoiceAsync defined in ../Source/Security/RNG/ISequence.cs Line 200, ignored.
Invalid cref value "!:ArgumentOutOfRangeException"  for ChoiceAsync defined in ../Source/Security/RNG/ISequence.cs Line 200, ignored.
Invalid cref value "!:ArgumentNullException"  for Sample defined in ../Source/Security/RNG/ISequence.cs Line 226, ignored.
Invalid cref value "!:ArgumentException"  for Sample defined in ../Source/Security/RNG/ISequence.cs Line 226, ignored.
Invalid cref value "!:ArgumentOutOfRangeException"  for Sample defined in ../Source/Security/RNG/ISequence.cs Line 226, ignored.
Invalid cref value "!:ArgumentNullException"  for SampleAsync defined in ../Source/Security/RNG/ISequence.cs Line 255, ignored.
Invalid cref value "!:ArgumentException"  for SampleAsync defined in ../Source/Security/RNG/ISequence.cs Line 255, ignored.
Invalid cref value "!:ArgumentOutOfRangeException"  for SampleAsync defined in ../Source/Security/RNG/ISequence.cs Line 255, ignored.
Invalid cref value "!:ArgumentNullException"  for SampleAsync defined in ../Source/Security/RNG/ISequence.cs Line 287, ignored.
Invalid cref value "!:ArgumentException"  for SampleAsync defined in ../Source/Security/RNG/ISequence.cs Line 287, ignored.
Invalid cref value "!:ArgumentOutOfRangeException"  for SampleAsync defined in ../Source/Security/RNG/ISequence.cs Line 287, ignored.
Invalid cref value "!:ArgumentNullException"  for Sample defined in ../Source/Security/RNG/ISequence.cs Line 313, ignored.
Invalid cref value "!:ArgumentException"  for Sample defined in ../Source/Security/RNG/ISequence.cs Line 313, ignored.
Invalid cref value "!:ArgumentOutOfRangeException"  for Sample defined in ../Source/Security/RNG/ISequence.cs Line 313, ignored.
Invalid cref value "!:ArgumentNullException"  for SampleAsync defined in ../Source/Security/RNG/ISequence.cs Line 342, ignored.
Invalid cref value "!:ArgumentException"  for SampleAsync defined in ../Source/Security/RNG/ISequence.cs Line 342, ignored.
Invalid cref value "!:ArgumentOutOfRangeException"  for SampleAsync defined in ../Source/Security/RNG/ISequence.cs Line 342, ignored.
Invalid cref value "!:ArgumentNullException"  for SampleAsync defined in ../Source/Security/RNG/ISequence.cs Line 374, ignored.
Invalid cref value "!:ArgumentException"  for SampleAsync defined in ../Source/Security/RNG/ISequence.cs Line 374, ignored.
Invalid cref value "!:ArgumentOutOfRangeException"  for SampleAsync defined in ../Source/Security/RNG/ISequence.cs Line 374, ignored.
Invalid cref value "!:ArgumentNullException"  for Shuffle defined in ../Source/Security/RNG/ISequence.cs Line 391, ignored.
Invalid cref value "!:ArgumentNullException"  for ShuffleAsync defined in ../Source/Security/RNG/ISequence.cs Line 411, ignored.
Invalid cref value "!:ArgumentNullException"  for ShuffleAsync defined in ../Source/Security/RNG/ISequence.cs Line 434, ignored.
Invalid cref value "!:ArgumentNullException"  for Shuffle defined in ../Source/Security/RNG/ISequence.cs Line 451, ignored.
Invalid cref value "!:ArgumentNullException"  for ShuffleAsync defined in ../Source/Security/RNG/ISequence.cs Line 471, ignored.
Invalid cref value "!:ArgumentNullException"  for ShuffleAsync defined in ../Source/Security/RNG/ISequence.cs Line 494, ignored.
Invalid cref value "!:ArgumentNullException"  for ShuffleInPlace defined in ../Source/Security/RNG/ISequence.cs Line 508, ignored.
Invalid cref value "!:ArgumentNullException"  for ShuffleInPlaceAsync defined in ../Source/Security/RNG/ISequence.cs Line 528, ignored.
Invalid cref value "!:ArgumentNullException"  for ShuffleInPlaceAsync defined in ../Source/Security/RNG/ISequence.cs Line 551, ignored.
Invalid cref value "!:System.Byte"  for NextBytesLittleEndian defined in ../Source/Security/RNG/Random.cs Line 76, ignored.
Invalid cref value "!:ArgumentOutOfRangeException"  for NextBytesLittleEndian defined in ../Source/Security/RNG/Random.cs Line 76, ignored.
Invalid cref value "!:System.Byte"  for NextBytesBigEndian defined in ../Source/Security/RNG/Random.cs Line 93, ignored.
Invalid cref value "!:ArgumentOutOfRangeException"  for NextBytesBigEndian defined in ../Source/Security/RNG/Random.cs Line 93, ignored.
Invalid cref value "!:System.Byte"  for FillLittleEndian defined in ../Source/Security/RNG/Random.cs Line 110, ignored.
Invalid cref value "!:ArgumentNullException"  for FillLittleEndian defined in ../Source/Security/RNG/Random.cs Line 110, ignored.
Invalid cref value "!:System.Byte"  for FillBigEndian defined in ../Source/Security/RNG/Random.cs Line 124, ignored.
Invalid cref value "!:ArgumentNullException"  for FillBigEndian defined in ../Source/Security/RNG/Random.cs Line 124, ignored.
Invalid cref value "!:System.Int32"  for _Size defined in ../Source/Security/RNG/Random32.cs Line 19, ignored.
Invalid cref value "!:System.UInt32"  for _Size defined in ../Source/Security/RNG/Random32.cs Line 19, ignored.
Invalid cref value "!:ArgumentNullException"  for SetSeed defined in ../Source/Security/RNG/Random32.cs Line 55, ignored.
Invalid cref value "!:ArgumentException"  for SetSeed defined in ../Source/Security/RNG/Random32.cs Line 55, ignored.
Invalid cref value "!:System.Int64"  for _Size defined in ../Source/Security/RNG/Random64.cs Line 19, ignored.
Invalid cref value "!:System.UInt64"  for _Size defined in ../Source/Security/RNG/Random64.cs Line 19, ignored.
Invalid cref value "!:ArgumentNullException"  for SetSeed defined in ../Source/Security/RNG/Random64.cs Line 55, ignored.
Invalid cref value "!:ArgumentException"  for SetSeed defined in ../Source/Security/RNG/Random64.cs Line 55, ignored.
Invalid cref value "!:ArgumentOutOfRangeException"  for .ctor defined in ../Source/Security/RNG/PRNG/RomuDuo.cs Line 42, ignored.
Invalid cref value "!:ArgumentOutOfRangeException"  for .ctor defined in ../Source/Security/RNG/PRNG/RomuDuoJr.cs Line 41, ignored.
Invalid cref value "!:ArgumentNullException"  for .ctor defined in ../Source/Security/RNG/PRNG/RomuQuad.cs Line 51, ignored.
Invalid cref value "!:ArgumentException"  for .ctor defined in ../Source/Security/RNG/PRNG/RomuQuad.cs Line 51, ignored.
Invalid cref value "!:ArgumentException"  for .ctor defined in ../Source/Security/RNG/PRNG/RomuQuad32.cs Line 48, ignored.
Invalid cref value "!:ArgumentException"  for .ctor defined in ../Source/Security/RNG/PRNG/RomuTrio.cs Line 45, ignored.
Invalid cref value "!:ArgumentException"  for .ctor defined in ../Source/Security/RNG/PRNG/RomuTrio32.cs Line 45, ignored.
Invalid cref value "!:ArgumentOutOfRangeException"  for .ctor defined in ../Source/Security/RNG/PRNG/Seiran.cs Line 34, ignored.
Invalid cref value "!:ArgumentNullException"  for SetSeed defined in ../Source/Security/RNG/PRNG/SFC32.cs Line 152, ignored.
Invalid cref value "!:ArgumentException"  for SetSeed defined in ../Source/Security/RNG/PRNG/SFC32.cs Line 152, ignored.
Invalid cref value "!:ArgumentNullException"  for SetSeed defined in ../Source/Security/RNG/PRNG/SFC64.cs Line 153, ignored.
Invalid cref value "!:ArgumentException"  for SetSeed defined in ../Source/Security/RNG/PRNG/SFC64.cs Line 153, ignored.
Invalid cref value "!:ArgumentOutOfRangeException"  for .ctor defined in ../Source/Security/RNG/PRNG/Shioi.cs Line 26, ignored.
Invalid cref value "!:ArgumentOutOfRangeException"  for .ctor defined in ../Source/Security/RNG/PRNG/Shioi.cs Line 40, ignored.
Invalid cref value "!:ArgumentNullException"  for .ctor defined in ../Source/Security/RNG/PRNG/Xoshiro256plus.cs Line 50, ignored.
Invalid cref value "!:ArgumentException"  for .ctor defined in ../Source/Security/RNG/PRNG/Xoshiro256plus.cs Line 50, ignored.
Invalid cref value "!:ArgumentNullException"  for .ctor defined in ../Source/Security/RNG/PRNG/Xoshiro256plusplus.cs Line 49, ignored.
Invalid cref value "!:ArgumentException"  for .ctor defined in ../Source/Security/RNG/PRNG/Xoshiro256plusplus.cs Line 49, ignored.

Add base class for Random32 and Random64

The current base class (Random32 and Random64) have several reusable methods. So for more abstraction, need to make a new abstract class that will be derived to Random32 and Random64.

Bug NextDouble()

/// <inheritdoc/>
public virtual double NextDouble()
{
// java conversion method
return this.NextLong() * (1.0 / (1L << 53));
//return (double)(NextLong() >> 11) * (1.0 / long.MaxValue);
}

double only have 11 bit exponent and 53 bit fraction.

the current algorithm divide a total of 64 bit with 53 bit. it will result value larger than 1.0 and its wrong.

Bug in Choice

while (selected.Count < select)
{
var index = this.NextInt(0, (uint)(items.Length - 1));
if (selected.Contains(items[index]) == false)
{
selected.Add(items[index]);
}
}

If each element in items[] have same value it will loop infinitely.

Lemire implementation is wrong

Sourced from the bottom of this article: https://www.pcg-random.org/posts/bounded-rands.html

if (l < range) {
        uint32_t t = -range;
        if (t >= range) {

t is derived from the negation of the range (which is a uint32_t). So for example, a range value of 10 should result in a t value of 4,294,967,286 (0xFFFFFFF6). You can verify this easily with windows calculator, visual studio, or a C# test:
image

However, your implementation uses uint.MaxValue and ulong.MaxValue to subtract the range, which results in 1 lower than expected t values. For example, uint.MaxValue is 4,294,967,295, so subtracting 10 would be 1 off from the above expected result.

The offending lines are here:

uint t = uint.MaxValue - range;

ulong t = ulong.MaxValue - range;

Manually seed RNG without creating new instance

From the start of the library until the latest version (2.3.0), seed can only set manually when creating new instance. Reseed method automatically set a new seed with System.Security.Cryptography.RNGCryptoServiceProvider.

TO DO:

  • Make a new method to manually set seed without need to creating a new RNG instance.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.