Task1, X%
Task2, Y%
Task3, Z%
----
TaskN, N%
And X + Y + Z + . . . + N = 100%
質問:-上記の構成ファイルには、さまざまなタスクに対するある種の重み付けがあります(Task1をX%の時間実行し、Line1に何かを印刷し、Task2をY%の時間実行し、Line2に何かを印刷し、Task3をZ%の時間実行します。 Line3などに何でも印刷します。総計量は合計で100%になるはずです。
私が書いたコード:-ファイルを1行ずつ読み取り、すべての行をStringのArrayListに格納するプログラムを作成し、1〜100の乱数を生成しました。たとえば、3つのタスクがあります。 -
Task1 75%
Task2 15%
Task3 10%
1〜100の乱数を取得します。番号が1-75doTask1はline1に何かを印刷することを意味し、76-90 do Task2はLine2に何かを印刷することを意味し、91-100doTask3はline3に何かを印刷することを意味します。しかし、どのようにすれば、任意のパーセンテージ数のN個のタスクを持つ任意の構成ファイルに対してこれを拡張できますか。私はこの部分で立ち往生しています。
private static Random r = new Random();
private final static int Low = 1;
private final static int High = 100;
String sCurrentLine;
ArrayList<Integer> percentageCalls = new ArrayList<Integer>();
br = new BufferedReader(new FileReader("S:\\config.txt"));
int R = r.nextInt(High-Low) + Low;
ArrayList<List<String>> allLines = new ArrayList<List<String>>();
while ((sCurrentLine = br.readLine()) != null) {
allLines.add(Arrays.asList(sCurrentLine.split("\\s+")));
Collections.shuffle(allLines);
}
for (List<String> s1 : allLines) {
percentageCalls.add(Integer.parseInt(s1.get(0)));
}
Collections.sort(percentageCalls, Collections.reverseOrder());