首页 > 后端开发 > C++ > 当 System.Random 失败时,如何在 C# 中生成唯一的随机数?

当 System.Random 失败时,如何在 C# 中生成唯一的随机数?

Mary-Kate Olsen
发布: 2025-01-21 13:07:12
原创
541 人浏览过

How Can I Generate Unique Random Numbers in C# When System.Random Fails?

解决 C# 中唯一随机数生成的挑战

生成唯一的随机数在许多编程任务中至关重要。 然而,C# 的内置 System.Random 类本身并不能保证唯一性。 正如一位开发人员发现的那样,这可能会导致重复的数字,即使 Random 实例是在函数外部声明的。

问题和更好的解决方案:

Random.Next()一起使用的种子并不直接控制唯一性。 这是一个更有效的策略:

  1. 利用收藏来实现独特性:

    • 维护一个列表来存储生成的数字。
    • 在添加新生成的号码之前,请检查该号码是否已存在于列表中。 仅当其唯一时才添加。
    <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>
    登录后复制
  2. 构建自定义随机数生成器:

    • 创建自定义生成器以确保定义范围内的唯一性。 这需要仔细考虑边缘情况并优化性能。

探索替代库:

几种替代方案提供了改进的随机数生成:

  • RandomNumberGenerator 一个更加密安全的选项。
  • Guid.NewGuid(): 生成全局唯一标识符 (GUID),适用于顺序唯一性不重要的情况。
  • System.Numerics.Tensors内的生成器:为各种分布提供随机采样方法。

最佳方法取决于应用程序的需求、性能限制和所需的随机性级别。

以上是当 System.Random 失败时,如何在 C# 中生成唯一的随机数?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板