python - 我如何用 Ruby/Python 编写这个?或者,你能把我的 LINQ 翻译成 Ruby/Python 吗?

标签 python ruby linq functional-programming

昨天,我问了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 吗? Python?还有其他函数式编程语言吗?

注意:请尽量不要使用太多循环和条件 - 否则解决方案很简单。另外,我宁愿看到一个解决方案,您不必生成比 N 大得多的数组,这样您就可以删除重复项并将其缩减为 N。

我知道我很挑剔,但我真的很想看到这个问题的一些优雅的解决方案。 谢谢!

编辑:
为什么所有的反对票?

最初我的代码示例在 Take() 之后有一个 Distinct(),正如许多人指出的那样,这可能会给我留下一个空列表。我更改了调用这些方法的顺序以反射(reflect)我最初的意思。

道歉:
有人告诉我这篇文章给人的印象相当势利。我并不是想暗示 LINQ 比 Ruby/Python 更好;或者我的解决方案比其他人的要好得多。我的目的只是学习如何在 Ruby 中执行此操作(在某些限制条件下)。如果我是个 SCSS ,我很抱歉。

最佳答案

>>> import random
>>> print random.sample(xrange(100), 5)
[61, 54, 91, 72, 85]

这应该在 0 — 99 范围内产生 5 个唯一值。 xrange 对象根据请求生成值,因此没有内存用于未采样的值。

关于python - 我如何用 Ruby/Python 编写这个?或者,你能把我的 LINQ 翻译成 Ruby/Python 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/122033/

相关文章:

linq - 如何删除 linq to xml 文档中的重复节点

python - Pandas 加入具有不同名称的列

javascript - 通过 Selenium 和 Python 通过 WebDriver 实例调用 execute_script() 方法时 arguments[0] 是什么?

python - DBF - 编码 cp1250

javascript - jPicker - 损坏的图像

ruby - 将 C 初始化的结构传递给嵌入式 Ruby 解释器

c# - LINQ to SQL 在更新后返回旧数据

ruby - :id when creating new instance 的委派

具有灵活的 gem 依赖关系的 Ruby Gems?

asp.net-mvc - 使用 linq 更新列表中的所有属性