【发布时间】:2019-03-15 18:06:22
【问题描述】:
我有以下方法可以创建二元输入。我需要计算二元组的数量来计算每次出现的概率。
public static String sortCountBigrams(ArrayList<String> bigrams) {
String outputResult = "";
Collections.sort(bigrams);
String curr = bigrams.get(0);
int counter = 1;
for (String next : bigrams) {
if (next.equals(curr)) {
counter++;
} else {
outputResult += curr + " " + Double.toString(counter) + " ";
counter = 1;
curr = next;
}
}
return outputResult;
}
这是二元组的示例输出,如下所示:
af 22 ag 22 ah 7 ai 53 aj 74 ak 1 al 384 am 157
我需要将计算(如下)添加到方法中,java 库中是否有一个函数可以在二元组中的元素数量不是常数的情况下执行此操作。
af 22/8 ag 22/8 ah 7/8 ai 53/8 aj 74/8 ak 1/8 al 384/8 am 157/8
提前致谢。
【问题讨论】:
-
这真的是你计算概率的方式。例如。 22/8、384/8。您确实意识到它永远不会大于 1。也许您正在寻找
22/(22+22+7+53+74+1+384+157)等等? -
您的第一句话是正确的。大多数概率将远小于 1。这就是我的目标。
-
您可以通过将列表中的元素数 (16) 除以 2 来获得分隔符
-
有计算元素个数的函数吗?这不是一个常数。 @Bentaye
-
只是澄清一下,
af 22 ag 22 ah 7 ai 53 aj 74 ak 1 al 384 am 157是输入列表吗?如果没有,你从哪里得到这些数字?
标签: java