Csharp/C#教程:使用LINQ和C#的随机数组分享


使用LINQ和C#的随机数组

我正在阅读MSDN杂志上关于在LINQ中使用Enumerable类生成随机数组的文章。 本文使用VB.NET,我不能立即确定C#中的等价物是什么:

Dim rnd As New System.Random() Dim numbers = Enumerable.Range(1, 100). _ OrderBy(Function() rnd.Next) 

Developer Fusion VB.Net到C#转换器说等效的C#代码是:

 System.Random rnd = new System.Random(); IEnumerable numbers = Enumerable.Range(1, 100).OrderBy(r => rnd.Next()); 

为了将来参考,他们还有一个C#到VB.Net转换器 。 还有其他几种可用的工具 。

我最初认为这是一个坏主意,因为排序算法需要对数字进行多次比较,并且每次调用该数字的lambda时,它将获得相同数字的不同排序键。 但是,它看起来只对列表中的每个元素调用一次,并存储该值以供以后使用。 此代码演示了这一点:

 int timesCalled = 0; Random rnd = new Random(); List numbers = Enumerable.Range(1, 100).OrderBy(r => { timesCalled++; return rnd.Next(); } ).ToList(); Assert.AreEqual(timesCalled, 100); 

 Random rnd = new Random(); IEnumerable numbers = Enumerable.Range(1, 100).OrderBy(r => rnd.Next()); 

那更容易的事情呢……

 Enumerable.Range(1, 100).OrderBy(c=> Guid.NewGuid().ToString()) 

我无法访问Visual Studio(手指交叉),我可以做到最好:

 System.Random rnd = New System.Random(); IEnumerable numbers = Enumerable.Range(1, 100).OrderBy(rnd => rnd.Next); 

使用C5通用集合库 ,您可以使用内置的Shuffle()方法:

上述就是C#学习教程:使用LINQ和C#的随机数组分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 IList numbers = new ArrayList(Enumerable.Range(1,100)); numbers.Shuffle(); 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1015668.html

(0)
上一篇 2021年12月31日
下一篇 2021年12月31日

精彩推荐