最近知乎有一个问题:“突然彩票中奖五千万你会立刻离职吗?”
没错,5000w!税后对一个年薪20w的程序员来说也足足少奋斗了200年!
“不仅不会离职,反而会考虑把公司收购了,自己当老板!”
声明:本文娱乐随谈,并非劝或诱导大家去买彩票,量力而行,开心就好。
所以程序员月入百万的真相是靠双色球时来运转吗!?
一.买双色球
这几年家里生意不行,疫情又赔了不少钱。而我有个习惯,就是坚持买彩票。
也不图什么一下就中头奖,就随便玩玩。
毕竟买次彩票也就一包烟钱,却可以让你快乐两天,何乐而不为呢?
摸着兜里吃臭豆腐找的十元零钱,来到了巷口那家熟悉的福彩店。
我:“老头,机选一注,5倍!”
黄老头:“好小子,又来了,今天是你第981天做公益了。”
我冷笑了下,心里暗念:这个糟老头子,几十年了你买的彩票都比我吃的饭多了,
不也还不是没中过。
"今天的号,前区后区都不错,还包含了老夫的生日,秒啊秒啊,不如再追他几十注"
我定睛一看前区03-04-05三连号,后面又是16-32,这不是坑呢么?
我信你个鬼:“不了不了,给我重摇个,你这太离谱。”
黄老头摸了摸胡须:“啧啧,年轻人,行再给你来出。”
攥着彩票,临走我还不忘自信给他说,
“等着老头,今儿晚我就中,明儿后都不会再来了,别太想我!”
…结果当晚看到结果的时候我人就傻了
这黄老头怕不是诸葛亮转世,自带观星之术?
二.文明观球
首先我们来了解下双色球的规则:
共由【1-33】区间内6个不重复带数字的红球和【1-16】区间内1个蓝球组成。
一等奖(6+1)中奖概率为:红球33选6乘以蓝球16选1=1/17721088=0.0000056%;
二等奖(6+0)中奖概率为:红球33选6乘以蓝球16选0=15/17721088=0.0000846%;
三等奖(5+1)中奖概率为:红球33选5乘以蓝球16选1=162/17721088=0.000914%;
四等奖(5+0、4+1)中奖概率为:红球33选5乘以蓝球16选0=7695/17721088=0.0434%;
五等奖(4+0、3+1)中奖概率为:红球33选4乘以蓝球16选0=137475/17721088=0.7758%;
六等奖(2+1、1+1、0+1)中奖概率为:红球33选2乘以蓝球16选1=1043640/17721088=5.889%;
共计中奖率:6.71%。
我们从程序的角度来模拟:
假设一个彩票店,每天都来人买机选(机器随机生成)5注不加倍(即5条号码,一条2元),
那么第几个人会中奖?
1.先抽取一组红球号和蓝球号作为奖池
用Random.nextInt(33)+1表示 1到33随机生成整数
且要用一个数组记录已出的球数,保证红球不能重复号
最后用一个ArrayList来记录红球并且sort自然排序
同样的,用Random.nextInt(16)+1生成一个1到16的整数作为蓝球
如下图程序输出所示:
2.在循环里模拟彩票中奖的校验
在循环里不断地生成一组又一组ArrayList的红球集合和单独int类型整数蓝球,
一组一组进行比较,
直到红球蓝球都与奖池的数字吻合,说明有人中奖了,跳出。
用循环次数除去5+1,表示出第几个来买机选5注的人。
( 为什么很多彩民喜欢买5注10元双色球?
假如我中了一等奖,现在差不多700万,除了税,还剩下560万…
嗯,北京一套房稍微好点的,我查查…
嗯…
差不多1200万左右?
还是回老家买房子吧,四百万左右,再买辆保时捷,差不多了。。。
嗯,买五注吧,10注太贵了,5注,十块钱买不了吃亏、买不了上当
如果是五个号不一样的,那就纯粹为了增加400%的中奖概率了!
对,中奖概率增加了400%!热血沸腾!
而且十块钱也不需要找零,确实方便一些。
)
运行结果如下:
当然,彩票虽有公益性质,其中却是大部分的赌博成分,切记不要抱有侥幸心理去尝试,否则只会越陷越深。还请理性购买,娱乐为主,及时止损。
具体代码如下:
/** * @author wzx * @date 2020/6/17 13:46 */public class doubleSeQiu { public static void main(String[] args) { // 奖池号 ArrayList<Integer> pool = getRedBalls(); System.out.println("本期双色球奖池号为:"); System.out.print("红球:"); for (int i = 0; i < pool.size(); i++) { System.out.print(+pool.get(i) + " "); } System.out.println(); int blueBall = new Random().nextInt(16) + 1; System.out.println("蓝球:" + blueBall); int j; for (j = 0; j >= 0; j++) { if (getRedBalls().equals(pool) && new Random().nextInt(16) + 1 == blueBall) { break; } } System.out.println("机选" + j/5+1 + "次彩票中头奖了!"); } /** * 红球摇球 * * @return 红球集合 size:6 */ private static ArrayList<Integer> getRedBalls() { ArrayList<Integer> redBalls = new ArrayList<Integer>(); boolean[] distinctRed = new boolean[33]; //创建一个用于存放红色球的数组 int[] redArr = new int[6]; int count = 0; while (count < 6) { int redNum = new Random().nextInt(33) + 1; if (!distinctRed[redNum - 1]) { redArr[count] = redNum; count++; distinctRed[redNum - 1] = true; redBalls.add(redNum); } } // 排序 Collections.sort(redBalls); return redBalls; }}