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

Project1

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

[已经解决] 请问如何随机抽取数组中的3个数据

[复制链接]

Lv5.捕梦者

梦石
10
星屑
39475
在线时间
1916 小时
注册时间
2010-11-14
帖子
3319

R考场第七期纪念奖

1
发表于 2019-1-10 16:40:33 | 显示全部楼层
本帖最后由 KB.Driver 于 2019-1-10 16:45 编辑

自己写脚本的话要善用F1文档


数组为a的话,
RUBY 代码复制
  1. a = a - [nil]
就行


另一方法


RUBY 代码复制
  1. a.delete(nil)

点评

记住找标准库和游戏库就好。标准库一般就是看内建类的Array和Hash,游戏库比较多时候是看Bimap和Sprite。  发表于 2019-1-10 16:50
F1文档不能正常搜索,如果对脚本不是特别熟的话使用起来很困难。  发表于 2019-1-10 16:47

评分

参与人数 1+1 收起 理由
jianyulei + 1 我很赞同

查看全部评分

用头画头像,用脚写脚本
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
10
星屑
39475
在线时间
1916 小时
注册时间
2010-11-14
帖子
3319

R考场第七期纪念奖

2
发表于 2019-1-10 16:56:39 | 显示全部楼层
本帖最后由 KB.Driver 于 2019-1-10 17:04 编辑

你这编辑还把标题和问题描述都改了= =
这样显得我答非所问啊

抽取其实也简单。

RUBY 代码复制
  1. class Array
  2. def 抽取(number) #number是抽取的数量
  3.   raise "数组长度小于要抽取的数量!" if self.size < number
  4.   result = []
  5.   while result.size < number
  6.     index = rand(self.size)
  7.     result << index unless result.include?(index) #防止抽到重复的
  8.   end
  9.   result.collect{|index| self[index]}
  10. end
  11. end
  12. #使用方法: array.抽取(3)

评分

参与人数 1+1 收起 理由
jianyulei + 1 塞糖

查看全部评分

用头画头像,用脚写脚本
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
10
星屑
39475
在线时间
1916 小时
注册时间
2010-11-14
帖子
3319

R考场第七期纪念奖

3
发表于 2019-1-10 21:51:30 | 显示全部楼层
本帖最后由 KB.Driver 于 2019-1-10 21:55 编辑
jianyulei 发表于 2019-1-10 19:44
我尝试了下,你和我的方法似乎都不太行,不能真正做到“抽取”的效果,抽取之后原本的数组中被抽取的元素 ...


原来你要的是抽完就没掉……
结合菜刀王的话可以写成函数:
RUBY 代码复制
  1. class Array
  2.   def 抽取(number)
  3.     raise "抽取数量大于数组长度!" if number > self.size
  4.     result = []
  5.     number.times{ result << self.delete_at(rand(self.size)) }
  6.     return result
  7.   end
  8. end


评分

参与人数 2星屑 +20 +1 收起 理由
VIPArcher + 20 辛苦了
jianyulei + 1 认可答案

查看全部评分

用头画头像,用脚写脚本
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-14 14:40

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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