Arrays 计算x和y之间的值在数组中出现的次数

Arrays 计算x和y之间的值在数组中出现的次数,arrays,ruby,Arrays,Ruby,我有一个由200个介于1和100之间的随机数组成的数组,需要找出数组中有多少个介于x和y之间的数。范围在1-10、11-20、21-30等之间 我有类似的东西 num_array = Array.new 200.times do num_array.push(rand(1...100)) end print num_array x = 1 y = 10 9.times do print num_array.count(x...y) #<== x += 10 y +=

我有一个由200个介于1和100之间的随机数组成的数组,需要找出数组中有多少个介于x和y之间的数。范围在1-10、11-20、21-30等之间

我有类似的东西

num_array = Array.new
200.times do
   num_array.push(rand(1...100))
end
print num_array
x = 1
y = 10
9.times do
  print num_array.count(x...y)   #<==
  x += 10
  y += 10
end
num\u array=array.new
200.5倍
数组推送数(rand(1…100))
终止
打印数字数组
x=1
y=10
9.5倍
print num_array.count(x…y)#带参数和不带块检查参数和当前元素是否相等。您需要传递一个块并进行一些比较,您可以使用,如:

num_array.count { |el| el.between?(x,y) }
带参数和不带块检查参数和当前元素是否相等。您需要传递一个块并进行一些比较,您可以使用,如:

num_array.count { |el| el.between?(x,y) }

您可以使用
group_by
并根据(n/10)*10对数组上的值进行分组,这将为您提供相应的10,例如:

(83/10)*10=80

应用transform_值,它获取哈希中每个元素的每个数组的元素总数:

p Array.new(200) { rand(1..100) }.group_by { |i| (i / 10) * 10 }.transform_values(&:count)  
# {70=>20, 80=>19, 60=>27, 30=>21, 20=>17, 40=>17, 90=>28, 10=>16, 50=>13, 0=>19, 100=>3} 

注0是1到10之间的数字的键(独占)。

您可以使用
groupby
并根据(n/10)*10对数组上的值进行分组,该值给出相应的10,例如:

(83/10)*10=80

应用transform_值,它获取哈希中每个元素的每个数组的元素总数:

p Array.new(200) { rand(1..100) }.group_by { |i| (i / 10) * 10 }.transform_values(&:count)  
# {70=>20, 80=>19, 60=>27, 30=>21, 20=>17, 40=>17, 90=>28, 10=>16, 50=>13, 0=>19, 100=>3} 

注0是1到10之间的数字的键(独占)。

附加:您还可以获取x和y之间的元素以及这些元素的重复次数

arr = num_array.group_by(&:itself).inject({}) { |m, (k,v)| m[k] = v.count if k.between?(x,y); m }
=> {5=>2, 6=>3, 8=>3, 2=>3, 10=>2, 7=>1, 4=>2, 9=>1}

arr.count
=> 8 

附加:您还可以获取x&y之间的元素以及这些元素重复的次数

arr = num_array.group_by(&:itself).inject({}) { |m, (k,v)| m[k] = v.count if k.between?(x,y); m }
=> {5=>2, 6=>3, 8=>3, 2=>3, 10=>2, 7=>1, 4=>2, 9=>1}

arr.count
=> 8 

很好地使用了
between
,但我会将其简化为
num|u数组.count{el | el>=x&&el>很好地使用
between
,但我会将其简化为
num|u数组.count{el | el>=x&el
num u数组。count(x…y)
统计
(x…y)
的数量(新的
范围的实例(x,y,true)
)数组中有。
num\u数组。计数(x…y)
统计数组中的
(x…y)
(范围的实例)。新的(x,y,true)
)数。