| 赞 | 664 |
| VIP | |
| 好人卡 | |
| 积分 | 345 |
| 经验 | |
| 最后登录 | 2024-7-10 |
| 在线时间 | 5096 小时 |
- 梦石
- 0
- 星屑
- 34459
- 在线时间
- 5096 小时
- 注册时间
- 2012-11-19
- 回帖
- 4715

|
发表于 2020-12-28 15:55:15
|
显示全部楼层
本帖最后由 芯☆淡茹水 于 2020-12-28 16:06 编辑
那有什么办法,只有自己写呗。
还有,照你这个办法,万一数组是 [1,1,2,3,3,4] 的情况呢?
依照你的思路,估计应该是这样吧
- class Array
- def sample(n=1)
- return [] unless n.is_a?(Integer) && n > 0
- arr = self | self
- temp = []
- n = [arr.size, n].min
- while temp.size < n
- obj = arr[rand(arr.size)]
- !temp.include?(obj) && temp.push(obj)
- end
- return temp
- end
- end
复制代码
或者再随便怎样写都可以
- class Array
- def sample(n=1)
- return [] unless n.is_a?(Integer) && n > 0
- arr = (self | self).sort{0.5 - rand}
- n = [arr.size, n].min
- return arr[0...n]
- end
- end
复制代码 |
|