前言
今天也是刚看完最近挺火的电影《孤注一掷》,也是亲眼的看到了,一个完整的家庭,是如何因为赌,而导致分崩离析,最后导致走向破碎的。
一旦涉及到电子的东西,很多东西都是变得可以控制的。这个作为程序员的我们是最清楚的,同时现在的反诈宣传,做的也是非常的到位,当时剧中哪位女警说的话,影响也非常的深刻。人都有贪心和不甘心,这也就是赌能真正抓住人的东西
好了不说那么多了,下面看一个简易的程序的代码实现
代码实现
首先我们定义一些常量
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,
可是当你一旦陷入进去的话,只要我们稍微修改一下中奖率
就会不断的去输。
赌博有害健康,需要我们每个人去制止
评论