gpt4 book ai didi

ruby - 如何在 Ruby 中获得相当于 python 的 randrange

转载 作者:太空宇宙 更新时间:2023-11-03 18:12:26 25 4
gpt4 key购买 nike

我想获得一个介于 0 和 20 之间的随机值,但跳过 3,就像 python 等效于:

random.randrange(0,20, 3)

最佳答案

这是一个单行:

(0...20).to_a.keep_if {|z| z % 3 == 0}.sample

并且 bjhaid 的示例将起作用,如果您使顶部数字成为第一个等于或大于 3 的数字,即:

rand(21 / 3) * 3

但您必须根据切片大小和上限值手动设置上限值。

我的单行代码对我来说有点难看,如果我只在整个程序的一个地方使用它,我可能会使用它。但如果我要重新使用它,我会制定一个方法:编辑 我刚刚注意到评论中的@cremno 回答。我比我的更喜欢他们的 step 版本。我会在一种方法中使用它:

def randrange(lower, upper, grouping)
(lower...upper).step(grouping).to_a.sample
end

我的旧方法...

def randrange(lower, upper, grouping)
arr = (lower...upper).to_a.keep_if {|i| i % grouping == 0}
arr.sample
end

关于ruby - 如何在 Ruby 中获得相当于 python 的 randrange,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31665935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com