Arrays 计算x和y之间的值在数组中出现的次数
我有一个由200个介于1和100之间的随机数组成的数组,需要找出数组中有多少个介于x和y之间的数。范围在1-10、11-20、21-30等之间 我有类似的东西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 +=
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&elnum u数组。count(x…y)
统计(x…y)
的数量(新的范围的实例(x,y,true)
)数组中有。num\u数组。计数(x…y)
统计数组中的(x…y)
(范围的实例)。新的(x,y,true)
)数。