设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1819|回复: 4
打印 上一主题 下一主题

[已经过期] 如何用Ruby进行随机组合?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1939
在线时间
403 小时
注册时间
2015-8-30
帖子
395
跳转到指定楼层
1
发表于 2017-8-11 13:50:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
比如说有一个数组ary(ary.size大于0),我现在要得到从ary中取出n个元素(n小于等于ary.size)的所有可能的组合其中随机的一个组合,作为另一个数组输出。
小仙女一枚~

Lv5.捕梦者 (版主)

梦石
1
星屑
23994
在线时间
3339 小时
注册时间
2011-7-8
帖子
3926

开拓者

2
发表于 2017-8-11 14:30:22 | 只看该作者
  1. ary.sort{|a, b| rand(1) * 2 - 1}[0..n]
复制代码
]
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21631
在线时间
9414 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

3
发表于 2017-8-11 14:51:28 | 只看该作者
  1. ary.shuffle[0..6]
复制代码
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1379
在线时间
962 小时
注册时间
2012-4-30
帖子
1475

开拓者

4
发表于 2017-8-14 22:27:44 | 只看该作者
居然在随手一搜这个标题就能在segmentfault发现一模一样的问题hhh
segmentfault
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
270
在线时间
125 小时
注册时间
2009-12-16
帖子
155
5
发表于 2017-8-14 23:34:10 | 只看该作者
本帖最后由 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
复制代码
⎝(゚∀。)⎠
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-16 05:51

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表