用java带你了解为什么十赌九赌

用java带你了解为什么十赌九赌

首先我们来看第一个例子。下面的代码我用的都是java实现。

抛硬币

如果我们想知道 1000 次抛硬币中出现正面的频率

计算机程序需要一个随机函数来模拟硬币的随机着落。

csharp 复制代码
public void  test1() {
    Random random = new Random();
    int flip = random.nextInt(2);
​
    if (flip == 1) {
        System.out.println("正面");
    } else {
        System.out.println("反面");
    }
}

我们掷硬币 1000 次,并计算正面出现的频率

ini 复制代码
public void test2() {
    int n = 1000;
    int heads = 0;
    Random random = new Random();
​
    for (int i = 1; i <= n; i++) {
        int flip = random.nextInt(2);
        if (flip == 1) {
            heads++;
        }
    }
​
    System.out.println("我们抛硬币得到了 " + heads + " 次正面");
    System.out.println("这是 " + (100.0 * heads / n) + "%");
}

如果我们将翻转次数增加到一百万,则正面的百分比非常接近 50%。

这就是所谓的大数定律

赌轮盘

现在是时候去赌场了 假设我们初始10块钱

规则如下。有 37 个数字,从 0 到 36。我们押注高数字,即如果球滚动到从 19 到 36 的数字,我们就赢了赌注,否则我们就会赔钱。

所以让我们玩吧,我们下注 10 元 玩一千次:

ini 复制代码
public void test3() {
    int cash = 0;
    Random random = new Random();
​
    for (int i = 1; i <= 1000; i++) {
        cash -= 10;
        int numb = random.nextInt(37);
        if (numb >= 19) {
            cash += 20;
        }
    }
​
    System.out.println("玩了之后的现金: " + cash);
}

大多数时候我们输了。为什么我们真的输了?原因是 有 18 个号码我们赢了,19 个号码输了。

如果把这个数值变大呢?玩1万次

可以发现全部都是输得了

这就是大数定律

赌场模拟

我们得到了 1000 元。我们总是在高数字上下注 10 美元。当 1000 元消失或变成 2000 元时,我们停止玩。当赌场日结束后(500 场比赛后),我们回家继续第二天玩

ini 复制代码
@Test
 public void test4() throws InterruptedException {
    int cash = 1000;
    int day = 1;
    int game = 0;
    Random random = new Random();
​
    while (cash < 2000 && cash >= 10) {
        game++;
        cash -= 10;
        int numb = random.nextInt(37);
        if (numb >= 19) {
            cash += 20;
        }
​
        if (game == 500) {
            System.out.println("第 " + day + " 天: $" + cash);
            day++;
            game = 0;
            Thread.sleep(150);
        }
    }
​
    System.out.println("第 " + day + " 天: $" + cash);
    System.out.println("-------------");
​
}

毫无疑问,全是为0

相关推荐
小蒜学长19 小时前
springboot基于JAVA的二手书籍交易系统的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端
忧郁的蛋~19 小时前
.NET实现多任务异步与并行处理的详细步骤
后端·c#·asp.net·.net·.netcore
CoLiuRs19 小时前
在 go-zero 中优雅使用 Google Wire 实现依赖注入
后端·微服务·golang
野犬寒鸦20 小时前
从零起步学习MySQL || 第七章:初识索引底层运用及性能优化(结合底层数据结构讲解)
java·数据库·后端·mysql·oracle
全职计算机毕业设计20 小时前
基于SpringBoot框架的在线教育系统设计与实现(三套文档参考)
java·spring boot·后端
IT_陈寒20 小时前
Python性能优化:5个被低估但效果惊人的内置函数实战解析
前端·人工智能·后端
千码君201620 小时前
Go语言:对其语法的一些见解
开发语言·后端·golang
yuuki23323321 小时前
【C语言】预处理详解
c语言·windows·后端
合作小小程序员小小店21 小时前
web网页开发,在线%考试,教资,题库%系统demo,基于vue,html,css,python,flask,随机分配,多角色,前后端分离,mysql数据库
前端·vue.js·后端·前端框架·flask
顾漂亮21 小时前
Redis深度探索
java·redis·后端·spring·缓存