从数组中选择随机元素并将其删除

MxL*_*evs 13 ruby

我想从数组中选择一个随机元素,将其从数组中删除,然后返回该元素.

我可以sample用来获取一个元素,index找到它的位置,然后delete_at删除它,但是有更好的方法吗?

小智 17

最美的解决方案:

array.delete(array.sample)
Run Code Online (Sandbox Code Playgroud)


Sla*_*ast 16

array.delete_at(rand(array.length))
Run Code Online (Sandbox Code Playgroud)

这似乎是正确的,我猜它效果最好.

编辑:这个答案在这里:是否有一个特定的函数来检索然后删除随机数组元素?所以我会这样做:D