在Mathematica的列表中计算ocncences(带代码但不完全正常工作)

use*_*939 5 wolfram-mathematica function count

我的问题是这样的:我有一个列表list,我想迭代这个列表,并计算每个值从0到1出现在步长中的次数step.我写了以下代码:

list = {0.2, 0.2, 0.7, 0.8, 0.17};

countingfornormal[list_, step_] := Module[{temp, num, res, i},
temp = Round[list, step];
num = {};
For[i = 0, i <= 1, i += step, {
   res = Count[temp, i];
   AppendTo[num, {i, res}];
}];
num
]
Run Code Online (Sandbox Code Playgroud)

但是,对于0.01的步长,输出似乎只计算值高达0.17.这真让我很沮丧,我似乎无法弄明白为什么.我还注意到,对于步长为0.02,输出计数值最多为0.34.

我在开始时就完成了,因为最初我使用的是一个更大的列表,其值小数点后大约7位.

我想也许这是一个时间问题,但我不确定如何解决这个问题.

任何帮助将不胜感激.

Dr.*_*ius 10

或许更好:

list = {0.2, 0.2, 0.7, 0.8, 0.17};
b = BinCounts[list, {0, 1, 0.01}]
(*
->{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, \
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
   0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
   0, 0, 0, 0, 0, 0, 0, 0}
 *)
 BarChart@b
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • @user只记得:如果你在Mathematica中为简单的任务做循环,你很可能不知道一些预先制作的功能和/或函数式编程方式 (3认同)