首页 > 解决方案 > 计算Lua表中整数频率的最佳方法是什么?

问题描述

这是我打印 0-32 的 100 个随机数的代码。现在我想按频率对接收到的整数进行排序。实现这一目标的最快方法是什么?

 math.randomseed(os.time()) -- random initialize
    math.random(); math.random(); math.random() -- warming up

    for x = 1, 100 do
        -- random generating 
        value = math.random(0,32)
        print(value)
    end

所需输出的示例如下所示

Output:
0:10
1:5
2:4
3:7
etc.

标签: lua

解决方案


更简单的是做一个直方图,即一个由值索引的表。每当遇到一个值时, histogram[value] 都会递增

histogram={}
for i = 0, 32 do
  histogram[i]=0
end
math.randomseed(os.time()) -- random initialize
math.random(); math.random(); math.random() -- warming up

for x = 1, 100 do
      -- random generating 
      value = math.random(0,32)
      -- print(value)
      histogram[value]=histogram[value]+1
end

for i = 0, 32 do
      print(i,":",histogram[i])
end

推荐阅读