How to Implement a Thread-Safe System.Random Object in .NET Framework?
原文英文,约500词,阅读约需2分钟。发表于: 。System.Random 类表示伪随机数生成器,这是一种能够产生满足某些随机性统计要求的数字序列的算法。var rand = new Random(); var i = rand.Next(); Console.WriteLine(i);如果要在多线程环境下使用上述代码:Parallel.For(0, 10, x => { var rand = new Random(); var ...
System.Random类是一个伪随机数生成器,可以生成满足随机性统计要求的数字序列。在多线程环境下使用Random对象会导致输出结果相同,可以使用Random.Shared替代。在高并发下,System.Random会出现异常,可以使用自定义的ThreadLocalRandom类来解决线程安全问题。在.NET Framework上,由于系统时钟分辨率过低,仍然会出现重复值问题,可以通过指定不同的随机种子来解决。如果使用.NET 6+,建议使用内置的Random.Shared,否则可以使用ThreadSafeRandom来解决问题。