我如何用Ruby / Python编写这个?或者,你能将我的LINQ翻译成Ruby
昨天,我问了
this问题,从来没有真正得到答案我真的很满意.我真的想知道如何使用诸如Ruby之类的函数语言生成N个唯一随机数的列表,而不必非常必要.
由于我没有看到任何我真正喜欢的东西,我已经在LINQ中编写了我想要的解决方案: static void Main(string[] args) { var temp = from q in GetRandomNumbers(100).Distinct().Take(5) select q; } private static IEnumerable GetRandomNumbers(int max) { Random r = new Random(); while (true) { yield return r.Next(max); } } 你能把我的LINQ翻译成Ruby吗?蟒蛇?任何其他函数式编程语言? 注意:请尽量不要使用太多的循环和条件 – 否则解决方案是微不足道的.此外,我宁愿看到一个解决方案,你不必生成比N大得多的数组,这样你就可以删除重复项并将其修剪为N. 我知道我很挑剔,但我真的很想看到这个问题的优雅解决方案. 编辑: 最初我的代码示例在Take()之后有Distinct(),正如许多人所指出的那样,它可能会留下一个空列表.我已经改变了调用这些方法的顺序,以反映我的意思. 道歉: 解决方法
在Ruby中:
a = (0..100).entries.sort_by {rand}.slice! 0,5 更新:这是一种略有不同的方式: 编辑: 在Ruby 1.9中你可以这样做: Array(0..100).sample(5) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |