抽奖程序Java代码?这3招让你手气开挂,不服来战

📅 2026/8/11 14:39:19
抽奖程序Java代码?这3招让你手气开挂,不服来战
Java实现随机抽奖的三种方法日期是二零二四年九月二十九日, 时间为零八时二八分五十秒, 作者是Tech。在Java里头实现随机抽奖的办法, 一般来讲我们会运用java.util.类去生成随机数, 接着依据这些随机数来挑选中奖者, 下面将会给出几种常见的随机抽奖实现方式, 有需要的朋友能够参考一下哦。引言在Java里头实现随机抽奖的办法, 一般来讲我们会借助java.util类去生成随机数, 紧接着依据这些随机数来挑选中奖者, 以下会给出几种常见的随机抽奖实现手段,覆盖从数组里面抽取, 从列表里面抽取以及基于权重的抽奖方式。1. 从数组中抽取import java.util.Random; public class LotteryFromArray { public static void main(String[] args) { String[] candidates {Alice, Bob, Charlie, David, Eva}; Random random new Random(); // 生成一个0到candidates.length-1之间的随机数 int index random.nextInt(candidates.length); // 输出中奖者 System.out.println(中奖者是 candidates[index]); } }2. 从列表中抽取借助或这类集合类同样能够达成抽奖, 尤其当属在对候选人进行动态添加或者删除之际。import java.util.ArrayList; import java.util.List; import java.util.Random; public class LotteryFromList { public static void main(String[] args) { List candidates new ArrayList(); candidates.add(Alice); candidates.add(Bob); candidates.add(Charlie); candidates.add(David); candidates.add(Eva); Random random new Random(); // 生成一个0到candidates.size()-1之间的随机数 int index random.nextInt(candidates.size()); // 输出中奖者 System.out.println(中奖者是 candidates.get(index)); } }candidates new ArrayList(); candidates.add(Alice); candidates.add(Bob); candidates.add(Charlie); candidates.add(David); candidates.add(Eva); Random random new Random(); // 生成一个0到candidates.size()-1之间的随机数 int index random.nextInt(candidates.size()); // 输出中奖者 System.out.println(中奖者是 candidates.get(index)); } }3. 基于权重的抽奖有些情形下, 各个候选人的中奖几率或许有别, 如此便要达成依据权重的抽奖。import java.util.ArrayList; import java.util.List; import java.util.Random; public class LotteryWithWeights { static class Candidate { String name; int weight; // 权重 public Candidate(String name, int weight) { this.name name; this.weight weight; } } public static void main(String[] args) { List candidates new ArrayList(); candidates.add(new Candidate(Alice, 1)); candidates.add(new Candidate(Bob, 3)); candidates.add(new Candidate(Charlie, 1)); candidates.add(new Candidate(David, 2)); candidates.add(new Candidate(Eva, 3)); Random random new Random(); int totalWeight 0; for (Candidate candidate : candidates) { totalWeight candidate.weight; } int target random.nextInt(totalWeight) 1; int sum 0; for (Candidate candidate : candidates) { sum candidate.weight; if (sum target) { System.out.println(中奖者是 candidate.name); break; } } } }candidates new ArrayList(); candidates.add(new Candidate(Alice, 1)); candidates.add(new Candidate(Bob, 3)); candidates.add(new Candidate(Charlie, 1)); candidates.add(new Candidate(David, 2)); candidates.add(new Candidate(Eva, 3)); Random random new Random(); int totalWeight 0; for (Candidate candidate : candidates) { totalWeight candidate.weight; } int target random.nextInt(totalWeight) 1; int sum 0; for (Candidate candidate : candidates) { sum candidate.weight; if (sum target) { System.out.println(中奖者是 candidate.name); break; } } } }在上述依照权重进行抽奖的示例里头, 我们定义了一类, 这类的用法是去存储候选人的具体姓名以及其相应权重。而后, 是使用逐次累加权重这种举措, 同时再生成一个随机数值, 借助这个随机数去裁定中奖者。需要上心提醒的是, 在此处我们运用.( ) 1这样的方式, 其目标在于保证所生成的随机数是处于范围从1到总的权重的值域之内的, 并且这个值域是涵盖两端值数的, 通过此种方式来防止因为数值为0而引发的各类问题。最终, 借由一项操作, 就是去逐个遍历排列好的候选人列表, 同时在此期间顺着每次循环操作进行累加权重这项重复性动作时, 去找出数值大于或者恰好等同于所生成随机数的首个候选人, 从而将此候选人认定为中奖者。下面这三种办法, 各自适用不一样的情景, 能够依照实际的需求, 去挑选采用。到这个地方, 这一篇有关Java实现随机抽奖的方法小结的文章, 就介绍到这儿咯逗号更多相关Java随机抽奖的内容, 需要去搜索我以前的文章, 或者继续浏览下面相关的文章哈逗号希望大家以后多多给予我支持谢谢