我用这来尝试创建一个加权随机:使用switch语句来测试加权随机数
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];
}
我使用的是马桶盖语句来测试,看看情况是:
case 1:
case 2:
case 3:
case 4:
问题是random.nextInt(sum_of_weight)
正在生成100到0之间的数字,这是基于我的25,25,25,25的4个权重。我需要一个数字来匹配其中一个可能的情况1-4?还是应该改变我的测试方法?
这整个过程是有点让我困惑,有些帮助将不胜感激。
所以基本上选择一个特定数字的概率是25%。另外,我会在整个程序的生命周期中改变百分比。
开关在哪里起作用? – 2012-07-06 02:19:56
它选择了一个精灵放置到场景中 – 2012-07-06 02:38:23
问题的标题“使用switch语句测试加权随机数”很具误导性 - 问题与switch语句无关(顺便提一下,许多人认为是邪恶的,但那是另一回事)。我也没有看到“问题”究竟是什么...... – 2012-07-06 02:58:26