Welcome

首页 / 软件开发 / JAVA / Java实现随机奖券抽奖模拟程序

Java实现随机奖券抽奖模拟程序

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class LotterySimulation {

    public static void main(String[] args) {
        int numberOfParticipants = 1000; // 参与人数
        List<Integer> tickets = new ArrayList<>(numberOfParticipants);

        // 初始化奖券列表
        for (int i = 1; i <= numberOfParticipants; i++) {
            tickets.add(i);
        }

        // 打乱奖券顺序
        Collections.shuffle(tickets);

        // 模拟每个参与者抽取一张奖券
        List<Integer> assignedTickets = new ArrayList<>(tickets.size());
        for (int i = 0; i < tickets.size(); i++) {
            int ticketNumber = tickets.get(i);
            System.out.println("Participant " + (i + 1) + ": Ticket Number - " + ticketNumber);
            assignedTickets.add(ticketNumber); // 记录分配的奖券
        }

        // 验证每个参与者都得到了一张唯一的奖券
        Collections.sort(assignedTickets);
        for (int i = 0; i < assignedTickets.size(); i++) {
            if (!assignedTickets.get(i).equals(i + 1)) {
                throw new RuntimeException("Error in ticket assignment!");
            }
        }

        System.out.println("All participants have been assigned unique tickets successfully.");
    }
}

解释代码:

初始化奖券列表:创建一个包含从1到1000的整数列表,表示1000张不同的奖券。

打乱顺序:使用Collections.shuffle()方法随机打乱这些奖券。

分配奖券:遍历被打乱后的奖券列表,并为每个参与者分配一张奖券。每分配一次就在控制台输出结果。

验证唯一性:将已分配的奖券排序后,检查是否与原始序号匹配(即1, 2, ..., 1000),以确保没有重复或遗漏。

这个程序可以运行并生成每个参与者随机获取到的一张奖券。如果有更多的并发需求或者需要进行多线程处理,请根据实际场景进一步优化代码。