我想选择5个随机数。
我的号码: 2-5-6-9-14
probability:
2 -> %30
5 -> %20
6 -> %35
9 -> %10
14 -> %5
如果三个数字相同,我想进行新活动。
不是:最多三个数字可以相同。
我该怎么做?
简单的方法:制作一个包含 100 个元素的数组,并在其中放入 30 个 2 个项目、20 个 5 个项目等等,然后在数组上运行随机,不是最好的解决方案,而是最简单的解决方案。
你应该尝试这样的事情(可以大大改进(。 这个想法是生成一个介于 0 和 100 之间的数字(代表 100%(。 然后根据概率返回所需的数字:
public int random() {
Random r = new Random();
int n = r.nextInt(100);
if (n < 30) // 30%
return 2;
if (n < (30 + 20)) // 20% (we exclude the 30% above)
return 5;
if (n < (30 + 20 + 35)) // 35% (we exclude the ones above)
return 6;
if (n < (30 + 20 + 35 + 10)) // 10% (30 + 20 + 35 are the previous probabilities)
return 9;
return 14;
}
最简单的方法是将所需的nuber多次添加到数组中,然后选择一个随机索引。
另外,您可能还想看看这个 具有概率的随机数