当前位置:  开发笔记 > 编程语言 > 正文

使用LINQ和C#的随机数组

如何解决《使用LINQ和C#的随机数组》经验,为你挑选了3个好方法。

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

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

HanClinto.. 20

该开发者融合VB.Net到C#转换器说,相当于C#代码为:

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

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



1> HanClinto..:

该开发者融合VB.Net到C#转换器说,相当于C#代码为:

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

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



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



3> Daniel Plais..:

我最初认为这是一个坏主意,因为排序算法需要对数字进行多次比较,并且每次调用该数字的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);

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有