【发布时间】:2012-12-27 18:21:19
【问题描述】:
我需要做的事情很简单,所以我不需要创建一个复杂的程序,我只需要使用一次,将这个结果作为我现在正在工作的真实项目的提要数据.
我需要获得一组 N 个元素的前 50 个(或者,最好是 50 个随机数)组合,从 2 到 50 的每个值都是 N。
在 Ruby 中,逻辑上是这样的
require 'pp'
pp (1..50).to_a.permutation.to_a.first(50)
但遗憾的是,这些程序总是内存不足。事实上,我可以在我的机器上生成的“最大”数字是 10,而我需要 50。
我很确定存在其他更有效的方法来实现这一点,但是因为我不太了解所涉及的数学,所以我需要拼命寻求您的帮助。你们中的任何人都知道一些gem、库,甚至是一种算法,它们以一种不消耗所有内存的方式来做到这一点。慢没关系,就像我说的,我只需要生成一次这个东西。
【问题讨论】:
-
你能添加一个你的排列方法的样本吗?
-
我使用的排列是Ruby标准类上Array类的标准方法
标签: ruby memory permutation out-of-memory