生成唯一的随机数在许多编程任务中至关重要。 然而,C# 的内置 System.Random
类本身并不能保证唯一性。 正如一位开发人员发现的那样,这可能会导致重复的数字,即使 Random
实例是在函数外部声明的。
问题和更好的解决方案:
与Random.Next()
一起使用的种子并不直接控制唯一性。 这是一个更有效的策略:
利用收藏来实现独特性:
<code class="language-csharp">public Random a = new Random(); public List<int> randomList = new List<int>(); int MyNumber = 0; private void GenerateUniqueNumber() { MyNumber = a.Next(0, 10); if (!randomList.Contains(MyNumber)) randomList.Add(MyNumber); }</code>
构建自定义随机数生成器:
探索替代库:
几种替代方案提供了改进的随机数生成:
RandomNumberGenerator
: 一个更加密安全的选项。Guid.NewGuid()
: 生成全局唯一标识符 (GUID),适用于顺序唯一性不重要的情况。System.Numerics.Tensors
内的生成器:为各种分布提供随机采样方法。最佳方法取决于应用程序的需求、性能限制和所需的随机性级别。
以上是当 System.Random 失败时,如何在 C# 中生成唯一的随机数?的详细内容。更多信息请关注PHP中文网其他相关文章!