写点什么

Java 仿抽奖系统

作者:java易二三
  • 2023-08-24
    湖南
  • 本文字数:1799 字

    阅读完需:约 6 分钟

前言

今天也是刚看完最近挺火的电影《孤注一掷》,也是亲眼的看到了,一个完整的家庭,是如何因为赌,而导致分崩离析,最后导致走向破碎的。

一旦涉及到电子的东西,很多东西都是变得可以控制的。这个作为程序员的我们是最清楚的,同时现在的反诈宣传,做的也是非常的到位,当时剧中哪位女警说的话,影响也非常的深刻。人都有贪心和不甘心,这也就是赌能真正抓住人的东西

好了不说那么多了,下面看一个简易的程序的代码实现

代码实现

首先我们定义一些常量

java复制代码private static final int PRIZE_LEVELS = 4; // 奖品级别数量private static final int[] PRIZE_AMOUNTS = {1, 10, 100, 1000}; // 奖品金额private static final double[] WINNING_RATES = {10, 0, 0, 0}; // 中奖率
复制代码


java复制代码public static void main(String[] args) {        // 设定中奖率        double winningRate = 0.1;        // 抽奖        int prize = drawLottery(winningRate);        // 发放奖品        if (prize > 0) {            System.out.println("恭喜你中奖了!奖金:" + prize + "元");        } else {            System.out.println("很遗憾,未中奖");        }    }    // 抽奖方法    private static int drawLottery(double winningRate) {        Random random = new Random();        int prize = 0;        // 根据奖品级别逐级判断中奖        for (int i = 0; i < PRIZE_LEVELS; i++) {            // 生成0到1之间的随机数,判断是否中奖            if (random.nextDouble() < winningRate * WINNING_RATES[i]) {                prize = PRIZE_AMOUNTS[i];                break;            }        }        return prize;    }}
复制代码

一个简单的抽奖程序。我们根据这个进行一些修改,更加的客观真实,我们加上已经有的金额和权重,让他更像是真正的赌。

我们加入权重以及自己的现金

java复制代码private static double[] WEIGHTS;// 自己的现金余额static int cashBalance = 1000;
复制代码

之后我们进行这样设计

java复制代码   public static void main(String[] args) {        // 计算权重        calculateWeights();        // 自己的现金余额        int cashBalance = 1000;        // 抽奖一次        drawLottery(cashBalance);    }
复制代码


ini复制代码public static void calculateWeights() {    WEIGHTS = new double[WINNING_RATES.length];    double totalWeight = 0;    // 计算总权重    for (double rate : WINNING_RATES) {        totalWeight += rate;    }    // 计算每个奖品级别的权重    for (int i = 0; i < WEIGHTS.length; i++) {        WEIGHTS[i] = WINNING_RATES[i] / totalWeight;    }}
复制代码


ini复制代码public static void drawLottery() {    Random random = new Random();    double randomValue = random.nextDouble();    int prizeIndex = 0;    double cumulativeWeight = 0;    // 根据随机值选择对应的奖品级别    for (int i = 0; i < WEIGHTS.length; i++) {        cumulativeWeight += WEIGHTS[i];        if (randomValue <= cumulativeWeight) {            prizeIndex = i;            break;        }    }    // 判断是否中奖    if (random.nextDouble() <= WINNING_RATES[prizeIndex]) {        int prizeAmount = PRIZE_AMOUNTS[prizeIndex];        System.out.println("恭喜您中奖了!获得奖金:" + prizeAmount + "元");        cashBalance += prizeAmount;    } else {        System.out.println("很遗憾,未中奖。");    }    // 更新现金余额    cashBalance -= COST_PER_DRAW;    System.out.println("抽奖后的现金余额:" + cashBalance + "元");}
复制代码

可以看出,我们这里规定的是 20 元抽奖一次,最高能达到 1000 元。



运行一次后发现从原来的升值到了 5000,

可是当你一旦陷入进去的话,只要我们稍微修改一下中奖率



就会不断的去输。

赌博有害健康,需要我们每个人去制止

用户头像

java易二三

关注

还未添加个人签名 2021-11-23 加入

还未添加个人简介

评论

发布
暂无评论
Java仿抽奖系统_Java_java易二三_InfoQ写作社区