专栏首页Crossin的编程教室【每周一坑】双色球选号器

【每周一坑】双色球选号器

说到做到,每周一坑 没有跳票,今天又来了!

我反复说,学会语法只是编程的开始,不断地写代码才是提升技能的必经之路。所以这个栏目我们肯定是要做下去的,哪怕它的阅读量注定不会很高。┑( ̄Д  ̄)┍

网上也有大量的编程练习,不管什么形式什么语言,你都可以尝试用 Python 或其他你正在学习的语言来实现。不过我们当然不想只做互联网的搬运工咯。我们的每周一坑挑选的题目将秉持有趣实用两个特点,力求让编程不再枯燥。

双色球选号器

本周的题目很简单:写一个小程序,帮你随机挑选一组或几组双色球彩票的号码。然后你就可以拿着去投注啦~

你说这算出来的号码有用吗?那当然并没有什么卵用啦。不过如果你身边有人沉迷于彩票,你不妨在这个程序的基础上,去结合双色球的开奖历史,算一算买彩票的投资回报,让他趁早打消一夜暴富的念头。(要致富,还是学编程更靠谱些[手动捂脸])

附双色球彩票规则:

双色球由红球和蓝球两部份组成,从33个红球号码(01~33)中选择6个,再从16个蓝球号码(01~16)中选择1个。开奖时,在红色球中随机摇出六个红号,在蓝色球中随机摇出一个蓝号。

要求:
  • 生成一组或多组彩票号码
  • 附加题1:模拟开奖结果,用你自己手选的号码,去计算中奖的概率
  • 附加题2:加入购买费用(2元一注)和奖金返还,算算看你玩一百年彩票能赚(kui)多少钱

中奖规则和奖金设置本文略过。有兴趣挑战附加题的同学可自行搜索“双色球”。

示例:
红球:02 05 10 22 32 33
蓝球:09

三门问题解答

上期回顾:【每周一坑】三门问题

昨晚试了下水,尝试小范围直播了这道题的解答。以后我们会经常干这种事的,欢迎大家去斗鱼上关注 Crossin的编程教室

这道题,可以通过数学方法去计算概率。不过我们不需要这么做。计算机其实是很“笨”的,我们只要让它去暴力模拟N多次情景,直接统计最终的结果即可。

我们给三个门编上号:0,1,2(计算机里通常都是从 0 开始)

通过之前课程【Python 第9课】 random 里介绍过的 randint 方法,随机设定一扇有汽车的门:

import random
car_door = random.randint(0, 2)

再随机从三个编号中选出一个作为参赛者的选择:

my_door = random.randint(0, 2)

用 random 模块的另一个方法 choice,来决定是否要换门:

change = random.choice([True, False])

如果换门,之前的选择是错的,那么反倒赢了汽车:

if change:
    # 记录次数
    switch += 1
    if my_door != car_door:
        # 一开始选错了
        switch_win += 1

否则如果不换门,之前的选择是对的,就赢汽车:

else:
    stay += 1
    if my_door == car_door:
        # 一开始选对了
        stay_win += 1

最后,统计结果并输出即可。Python2 里,两个整数相除会得到整除值,在计算概率时需小心这个坑。

# 乘上 1.0 转为浮点数
print 1.0 * switch_win / switch

某次结果示例:

换门 49976
换门赢 33324, 66.68%
不换门 50024
不换门赢 16543, 33.07%

公众号里回复 三门 可以获取完整参考代码地址,其中还包括另一份推广到 N 扇门的通用解法。

上一期有不少同学提交了解答,都挺不错的。其中 Sega 的解法比较简洁,并且如果扩展至更多的门,也容易修改。代码地址:

https://github.com/segalou/python_projects/blob/master/three_doors/three_doors.py

本期的双色球问题,依然欢迎大家踊跃提交。虽然暂时提交了也没啥奖励,不过要啥自行车,你把咱们的题都做了,还怕没自行车?!

本文分享自微信公众号 - Crossin的编程教室(crossincode)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-02-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【每周一坑】缩小图片尺寸

    之前我们的题目大多偏向解决数学问题,今天来一道偏应用的: 我们知道,通常来说一张图片的分辨率越高,它就越清晰,但文件占用的空间就越大。有时候我们并不需要那么高的...

    Crossin先生
  • 像对象一样对待数据

    咱们编程教室有不少同学,学完了基础课程,掌握了一定的编程能力,开始做项目了。然后很可能遇到一个问题:管理数据。课程里有讲过用文件保存数据,还有 pickle、c...

    Crossin先生
  • 一道有悖直觉的概率题

    我是一个概率控,平常遇到和概率相关的事情都喜欢去推算一下,喜欢看概率有关的影视作品(决胜21点、欺诈游戏、赌博默示录……),就连在汤姆熊或是巴黎人,我也会估下哪...

    Crossin先生
  • 超声波测距模块

    硬件介绍 1.使用场景 超声波测距模块在平时做电子产品、机器人、智能设备中的应用里还是非常常用的,使用非常简单,但是代码的编写和理解其实并不容易,在这里想和大家...

    跋扈洋
  • 腾讯推出百万现金漏洞悬赏计划!

    ? 本文来自:腾讯安全应急响应中心 ? 全球战“疫”正火热,远程办公掀浪潮! 受疫情影响,目前远程办公在全球范围内掀起热潮。腾讯远程会议及通讯协作软件产品——...

    腾讯技术工程官方号
  • 最高五万元现金!TSRC腾讯云业务安全专项今日开战

    产业互联网时代,“上云”已经成为各行各业数字化转型过程中的关键一步,“云载万物”是未来世界的写照,“云安全”也因此显得更为重要。互联一切,连接未来,同样也需要...

    云鼎实验室
  • TIOBE - 2020年2月编程语言排行榜,Objective-C 前路迷茫

    Objective-C这个月在TIOBE指数中又失去了7个位置,因此在前20名中处于下滑的边缘。实际上,下降的时间比预期的要长得多。2014年,苹果宣布新的编程...

    用户6543014
  • B端产品经理需要的项目管理能力

    当今社会,随处可见各种各样的项目,项目对社会、对企业、对个人的意义都是非常重要。项目管理就是把各种资源应用于目标,以实现项目的目标,满足各方面既定的需求。项目管...

    物流IT圈
  • ios入门之界面基础

    学习移动app开发,我们常常从讲解基本的控件开始,如UILabel、UISearchBar、UIButton、UITextField等等。在实现一个简单的ios...

    xiangzhihong
  • 最小二乘法和梯度下降法有哪些区别? 以及梯度下降法Python实现

    相同 1.本质相同:两种方法都是在给定已知数据(independent & dependent variables)的前提下对dependent variab...

    bear_fish

扫码关注云+社区

领取腾讯云代金券