首页 > 后端开发 > C++ > 'orderby(x => r.next())`列出列表的有效方法吗?

'orderby(x => r.next())`列出列表的有效方法吗?

Mary-Kate Olsen
发布: 2025-01-31 19:06:10
原创
808 人浏览过

Is `OrderBy(x => r.next())`一种有效的列表列表的方法吗?
“ /></p>
<p>><strong>使用<code>OrderBy(x => r.Next())</code>用于列表改组:有效还是没有?
</strong>有些程序员使用</p>来调整列表,但这是最好的方法吗?让我们检查一下其机制和效率。<p>
<code>OrderBy(x => r.Next())</code></p>它如何工作<p><strong>
</strong>此方法将随机数分配给列表中的每个项目,然后根据这些随机数对列表进行分配。  这有效地将列表随机重新定为。</p>>
<p> </p>性能问题<p><strong>
</strong>主要缺点是性能。  该方法具有O(n log n)的时间复杂性,使其比其他o(n)改组算法的速度明显慢。</p>>
<p><code>OrderBy</code>一个更好的解决方案:Fisher-Yates Shuffle <ante></p>>
<p>>更有效的替代方法是使用交换算法的Fisher-Yates Shuffle(特别是Durstenfeld的变体)。  此示例使用此方法显示了可重复使用的方法:<strong>
</strong>
</p>此改进的版本会在随机散装时产生元素,优化内存使用和处理。<p>>
<code>Shuffle</code></p><div class=

public static IEnumerable<T> Shuffle<T>(this IEnumerable<T> source, Random rng)
{
    T[] elements = source.ToArray();
    for (int i = elements.Length - 1; i >= 0; i--)
    {
        int swapIndex = rng.Next(i + 1);
        yield return elements[swapIndex];
        elements[swapIndex] = elements[i];
    }
}
登录后复制

的重要说明>

在使用>类时,请记住这些要点:Random>

在快速演替中创建多个

实例可以导致类似的随机数序列。 Random

类不是线程安全。
  • Random>请参阅链接的文章,以获取有关使用
  • 类避免这些陷阱的最佳实践。
  • ">

    以上是'orderby(x => r.next())`列出列表的有效方法吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

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