Project1

标题: 如何用Ruby进行随机组合? [打印本页]

作者: 有丘直方    时间: 2017-8-11 13:50
标题: 如何用Ruby进行随机组合?
比如说有一个数组ary(ary.size大于0),我现在要得到从ary中取出n个元素(n小于等于ary.size)的所有可能的组合其中随机的一个组合,作为另一个数组输出。
作者: guoxiaomi    时间: 2017-8-11 14:30
  1. ary.sort{|a, b| rand(1) * 2 - 1}[0..n]
复制代码
]
作者: 喵呜喵5    时间: 2017-8-11 14:51
  1. ary.shuffle[0..6]
复制代码

作者: 铅笔描绘的思念    时间: 2017-8-14 22:27
居然在随手一搜这个标题就能在segmentfault发现一模一样的问题hhh
segmentfault
作者: 0nepeop1e    时间: 2017-8-14 23:34
本帖最后由 0nepeop1e 于 2017-8-14 23:35 编辑
  1. class Array
  2.   def sample(i = 1, repeat = false)
  3.     return nil if self.empty?
  4.     n = [[0,i].max,a.size].min
  5.     return self[rand(self.size)] if n == 1
  6.     if repeat
  7.       return n.times.map do
  8.         self[self.size]
  9.       end
  10.     else
  11.       a = a.size.times.to_a
  12.       res = n.min.times.map do
  13.         self[a.delete(a[rand(a.size)])]
  14.       end
  15.       return res.size > 1 ? res : res[0]
  16.     end
  17.   end
  18. end
复制代码





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1