私はこれを使用して、重み付きランダムを作成しようとしています。
int choice_weight[] = { 25, 25, 25, 25 };
int num_choices = choice_weight.length;
Random random = new Random();
int i;
int sum_of_weight = 0;
for (i = 0; i < num_choices; i++) {
sum_of_weight += choice_weight[i];
}
int rnd = random.nextInt(sum_of_weight);
System.out.println(rnd);
for (i = 0; i < num_choices; i++) {
if (rnd < choice_weight[i])
rnd -= choice_weight[i];
}
私はswtichステートメントを使用して、ケースが次のとおりであるかどうかをテストおよび確認しています。
case 1:
case 2:
case 3:
case 4:
問題はrandom.nextInt(sum_of_weight)
、25、25、25、25の4つの重みに基づいて100から0までの数値を生成していることです。考えられるケース1〜4の1つに一致する番号が必要ですか?または、テスト方法を変更する必要がありますか?
このプロセス全体は私を混乱させるようなものです、いくつかの助けをいただければ幸いです。
したがって、基本的には、特定の番号が選択される可能性が25%になります。また、プログラムのライフサイクル全体でパーセンテージを変更します。