用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