燕子

IMG_0508

一窝燕子,数数小脑袋,雏燕四只,个个嘴巴大得能把自家大人的脑袋装进去。图四五六:喂完就该拉了,小燕子掉转身体,PP朝外,努出一根粗橛,由成鸟衔走扔掉。成鸟显然不乐意叼着一根便便飞太远,飞出窝不久,就很随意地扔到五米外一个女孩头上了。

IMG_0540

IMG_0541

IMG_0559

IMG_0560

IMG_0562

程序员入伙书——换还是不换

话说,这道题,十几年前,玩论坛的时代,就出现在网上了:

三道门,一道门后面有车,另外两道门,后面都是羊。
有个节目主持人,他知道车在那道门后。
他请你选一道门,但不立即打开。
他在剩下的两道门里,打开一道,放出一只羊给你看。
现在台上还剩两道门关着,一道是你选的,一道是谁也没碰过的。
主持人说:现在你有个机会,可以改变主意,挑另一道门。
不管你换还是不换,你最终选中的那道门,后头的东西都归你。
你换不换?——假设价值观是车比羊好。

当时,论坛上吵成一片,有说该换的,有说不该换的。对于不换而中奖的概率,大家比较一致:1/3。而对于换而中奖的概率,基本上有三个说法:1/3、1/2、2/3。

论坛上贴题的那人说:“正确答案是应该换,中奖概率会从1/3提升到2/3。并且,此答案经过了智商排名极靠前的一位人士的认可。不过,还是有许多不愿盲信权威的年轻人,自己动手,用各种办法做实验,有大活人亲自做的,有用计算机模拟的,而结果一致确认:该换,中奖概率确实提升到了2/3。另外,虽然实验结果如此,有相当多的亲手做实验的人依然坚持(理论上)不该换。”

时至今日,这道题提到人口稠密的社交媒体上来,依然能够引起争论。

为了让读者老爷们怀着轻松的心情观看余下的内容,我提前把答案确认一下:

应该换。
我不是从一道门换到另一道门,
而是从一道门换到另外两道门。
“换并且选到车”的概率 = “第一次没选到车”的概率

三道门的迷惑性较大,读者可以极端化一下:如果是一亿道门,你挑一扇(选中车的概率很悲观),然后主持人把许许多多门打开,放出来满坑满谷的羊,最后只留下一道门,你换不换?

或者再换一个思路:主持人挑你和另外一个现场观众上来,让你选一道门,让那位观众选两道门,然后问你,愿不愿意拿你的一道门换那位观众的两道门?

“开门放羊”只是个迷惑动作,当门的总数大于2时,挑剩下的门里,一定能放出至少一只羊。所以它没有增加任何信息,也没有改变概率分布,这一步骤和事后开奖并无不同。

用概率论的运算过程则是:

  • 换而中车的概率 =
            首次选羊的概率 × 拿羊换到车的概率 +
            首次选车的概率 × 拿车换到车的概率
  • 首次选羊的概率 = 2/3
  • 首次选车的概率 = 1/3
  • 拿羊换到车的概率 = 100%
  • 拿车换到车的概率 = 0%
  • 因此,换而中车的概率 = 2/3

如果你看到这里还是觉得数学上不该换,那就可以关掉页面了。接下来并没有理论上的新内容,而且因为要用程序表达,技术上会比较烧脑。我不想让你同时背两个包袱走路,会芯片过热的。

 
虽然这道题没有数学理论难度,我还是想拿它做个编程的例子。原因是,我发现用计算机的思维,可以洞穿这道题的本质。做完实验依然坚持不该换的人里面,一定没有用计算机模拟的。

我的第一版程序很简单(手机读者可用手指左右拖动代码区):

import random

def lottery(n, change):  # n是门的个数,change设置“换还是不换”
    car = random.randint(0, n - 1)   # 为车生成一个随机的门号
    pick = random.randint(0, n - 1)  # 我选择一个随机的门号
    # 如果我未选中车但愿意换,或者我选中了车并且不换
    if (pick != car and change) or (pick == car and not change):
        return True      # 我都会中奖
    else:                # 否则
        return False     # 就不会

repeat = 100      # 重复做此实验100次
win = 0           # “中奖”计数器置零
for i in range(repeat):
    if lottery(3, True):  # 每次都选择“换”
        win += 1          # 如果中奖,计数器加一
# 打印中奖百分比
print("%.2f%%" % (win / repeat * 100))

结果如何呢?运行三遍:

=============== RESTART: cargoat.py ===============
68.00%
>>> 
=============== RESTART: cargoat.py ===============
71.00%
>>> 
=============== RESTART: cargoat.py ===============
68.00%
>>> 

100次实验,如果选择“换”,中奖次数确实在2/3左右。当然我们也得反过来做一下,把lottery函数的第二个参数设为False:

repeat = 100      # 重复做此实验100次
win = 0           # “中奖”计数器置零
for i in range(repeat):
    if lottery(3, False):  # 每次都选择“不换”
        win += 1           # 如果中奖,计数器加一
# 打印中奖百分比
print("%.2f%%" % (win / repeat * 100))

运行三遍,选择“不换”的中奖概率确实较低:

=============== RESTART: cargoat.py ===============
34.00%
>>> 
=============== RESTART: cargoat.py ===============
34.00%
>>> 
=============== RESTART: cargoat.py ===============
27.00%
>>> 

还可以发现,实验的重复次数(repeat的值)越高,中奖概率越是稳定在2/3上,下面是repeat = 100000的三遍运行结果:

=============== RESTART: cargoat.py ===============
66.55%
>>> 
=============== RESTART: cargoat.py ===============
66.81%
>>> 
=============== RESTART: cargoat.py ===============
66.70%
>>> 

在这个程序里,原本热热闹闹的挑门、开门放羊、问你换不换的那些动作,一下子被简化成了“你第一次猜中的概率有多大”的问题。我刚才说:“做完实验依然坚持不该换的人里面,一定没有用计算机模拟的。”是因为写程序前,我先假装认为不该换,而写下lottery函数的前两行时,就找到了事情本质的描述方式(上面的粗大字体)。

 
然而,读者可能认为,我并没有精确地按照剧本来写,所以运算结果不可信。为此,我必须按照剧本写一遍程序,像宋小宝吃面那样,辣根和蒜瓣这些步骤都不能省。说实在的,因为需要彻底改变思路,写新程序很累,但我还是勉力完成了:
猛击阅读全文

白鹡鸰

飞翔的白鹡鸰(合成图)

飞翔的白鹡鸰(合成图)

 

white-wagtail-juv

白鹡鸰幼鸟

white-wagtail-juv-feedself

白鹡鸰幼鸟

 

记梦

dream-20160430

原委忘掉了,大约是繁重体力活需要人手,玩了点法术(并不知何时学会的)变出一队小兵帮忙。事情办完了,小兵们列队出城回营。但他们来自虚无,无营可回,走到城门界时,陆续变成火光,呼呼地消散了。

剩下六七个,拍拍他们肩膀,了却了两三个顿悟自己没身体的。言语提醒“孩子,你去哪儿?”又散掉了两个顿悟自己无处可去的。

最后剩下两个,无论如何不再消失,还跟我有说有笑的。两个凭空冒出来的大活人需要我养活,被愁醒了。

答“为何‘拟啄木鸟’叫这个名字”

拟啄木鸟凿树洞生活,脚趾两前两后,这些和“真的”啄木鸟很像。

“拟”、“伪”这类命名指生物表面上看像是某一大类,但总觉得哪儿不对,或者解剖、DNA研究证明实应独立划分或者归入其它类群。

曾经有个“褐背拟地鸦”,长相和习性像地鸦,深入研究则表明它细胞核深处是山雀的DNA,实为山雀在青藏高原的特化分支,最终改名“地山雀”。

红头穗鹛的属类是“伪穗鹛属”,和“穗鹛属”区分。

有时,为了和“拟、伪”区分,“真的”那个有时还会特别加个“真”字。一下子跳到脑子里的是爬行动物的例子:拟鳄龟 vs 真鳄龟。

生物分类,外表不可靠,乱是常态。鸦雀属的拉丁名paradoxornis,paradox意指矛盾的,ornis 是鸟,很直白地说这真是一群混乱的鸟。这下面的很多鸟都拉出去单独立属了。

陶土上的精灵

陶土上的精灵·黄河流域史前彩陶联展

陶土上的精灵·黄河流域史前彩陶联展

@金沙遗址博物馆 正在展出《陶土上的精灵·黄河流域史前彩陶大联展》,展期2016.04.26 – 2016.07.24。联展者,有七家文博单位贡献展品也:青海省博物馆甘肃省博物馆中国社科院考古研究所河南博物院河南省文物考古研究院山东博物馆茂县羌族博物馆。巡展到金沙之前,这个展览是山东博物馆的《大河上下》。

展览《前言》:“彩陶是中国史前陶器中最为绚丽多彩的艺术品。陶器上繁简不一的纹样,不仅显示出独特的时代与地域风格,也代表了不同的审美、信仰和风俗。中国的史前彩陶,从公元前5000年前出现,一直持续到公元前1000年前后,发展近4000年。其中,黄河流域是彩陶发现最为集中也最具特色的地区,并先后形成了仰韶文化、大汶口文化、马家窑文化三个彩陶文化中心,各文化系统既独立发展,又相互影响。”

手绘红头长尾山雀

红头长尾山雀手绘过程

红头长尾山雀手绘过程

绘画软件支持图层,这对用手机画写生很有利:起稿不需要担心犯错,反正更正式的稿子画在另一个图层上,逐次迭代改良就好。第一稿的山雀画得头大身小尾巴长,改正很容易:把这个图层克隆一份,其中一份,单留下鸟头,稍稍缩小一下,再拼接回原来的图层,修整一下连接处就可以了。

手机绘画软件是Autodesk SketchBook Mobile

两个字概括博物馆规范

摩西像前的提示牌,上写: 请勿站在雕像前对团队解说

摩西像前的提示牌,上写:
请勿站在雕像前对团队解说

从程序员的视角来概括博物馆规范,就是两个字:“读”和“写”。

“读”是个接收信息的操作,不对博物馆做出改变。“写”是个输出信息的操作,会改变博物馆的环境乃至展品本身。

看馆是个读操作。开闪光、奔跑喧闹、乃至于偷窃、捣毁,都是写操作。

对于读操作,博物馆不应反感,或者应该鼓励。博物馆规范、限制、禁止甚至报警的,是写操作。

远到国博闪光灯事件,近到“跑男”进杭州博物馆事件,都是因为这些行为制造了强光、噪音、撞击的风险,是在“写”博物馆,所以引起人们的隐忧和争论。

而国博陈副官说“在博物馆拍照都很傻”,引起博物馆众多爱好者集体呛声,是因为陈副官批评了实应鼓励的“读”。

有些“读”,产生了令人不适的“写”,例如一个人抚展柜而盘桓,长期近距离霸占一个展柜摄影或临摹写生,快门声过于响亮密集,在方寸之地支起三脚架,侵占四五个人的空间,等等。

所以博物馆规范并不难记,不需要特别心虚地逐条查阅可以做什么不能做什么。牢记“读”和“写”的区别,时时问问自己:“我现在是在读还是在写?”就基本上可以做到“随心所欲不逾矩”了。

其实,“走进博物馆”也是个“写”,但如果没有它,则无法鼓励“读”,所以对这个行为并不禁止,但有规范或者限制。比如说:走进博物馆,可以,跑进,就不行。

内巴蒙脚下的埃及雁

内巴蒙(Nebamun)墓室壁画·沼泽狩猎 大英博物馆藏

内巴蒙(Nebamun)墓室壁画·沼泽狩猎
大英博物馆藏

内巴蒙(Nebamun)脚旁的埃及雁

内巴蒙(Nebamun)脚旁的埃及雁

埃及雁 图片来自gobirding.eu

埃及雁
图片来自gobirding.eu

大英博物馆藏的内巴蒙(Nebamun)墓室壁画《内巴蒙的沼泽狩猎》(Nebamun hunting in the marshes)中,内巴蒙脚下是一只埃及雁:红嘴红脚,棕色眼圈,绿色飞羽,翅有暗线,胸有黑斑。

出现在埃及墓葬壁画里,真不愧埃及雁这个名字哎。

所谓”银行卡盗刷黑幕”

被这个视频《记者卧底揭银行卡盗刷黑幕:10秒就可复制一张卡》尴尬到了。

bank-card-copy

视频简介称:

【震惊!记者卧底揭银行卡盗刷黑幕:10秒就可复制一张卡】近日河南@都市频道 记者卧底银行卡盗刷团伙,调查结果触目惊心:8000元买一台银行卡复制器,短短10秒就能复制银行卡,卡号、密码全准确!目前几万条银行卡信息被泄露!

 


 

听起来好像很吓人,不禁细细看了几遍。视频的内容是:记者找了个卧底,花8000块买了个读写卡机。记者刷了一下自己的银行卡,屏幕显示银行卡磁条里的数据,旁白口头说:“而且还有密码”(02:00)。记者又把这些数据复制到一张空白卡上,把新卡拿到银行取款机那里,输入自己的银行密码,之后就看到取款机唯命是从,想查余额就显示余额,想取现金就吐现金。

记者大声质问:我把钱存银行是因为我相信你,现在我还怎么相信你?

然而,看到这类新闻,就要按照经典思路想一想:有这么好的随便拣张卡就能取钱的工具,8000软妹币转让给别人?学雷锋啊?

02:00的女声旁白,声称读卡信息里“还有密码”,这时我们就得问一句:

你说有密码就有密码啦?

视频从头到尾,并未证实在取款机上输入的密码和刷卡屏显内容之间的因果关系:记者并未拍下屏幕上某串数字,并演示他是根据这串数字输密码的。

演示者必须事先不知道银行卡密码,演示才能称得上严密有效。

做个思维训练:通过电话银行改掉密码,再拿着毫不知情的银行卡到取款机,必须用新密码才能取钱。这就说明了密码存在银行的服务器里,而非卡上。多说一点,其实连银行服务器也不知道你的六位数密码是什么,不过这是另外一个话题了,见我以前写的《“会报警”的取款机》。

那么多贼在取款机上装针孔摄像头、键盘罩,就是为了偷这个不在银行卡上的密码。他们在取款机的插卡口装文中的这类读卡机,用来复制卡片;再用摄像头、键盘罩、或者更生猛的望远镜偷看储户按密码(所以取款机提示遮挡键盘)。两个信息都拿到,才能黑掉储户。

如今,“老杨”的机器只做了第一步就搞定了卡片和密码,我们就得问问以前的贼都是饭桶吗?

这个8000块的刷卡机只是螳螂捕蝉黄雀在后的骗局的一部分:

卖刷卡机的 骗 想偷银行的。

从前有号称用最廉价的工业明胶和石灰石做假鸡蛋的,开课授徒,收很贵的培训费。学生进门时,老师会带着你去看她用的原料和产品,也会示范把原料放到设备里的全过程,过一夜你再去看,老师已经把示范产品端出来了。确实很逼真,打到碗里完全看不出是假的——其实,就是真鸡蛋。老师并不靠卖假鸡蛋发财,她从培训费挣钱,骗的是想造假鸡蛋的奸商,而受骗的奸商,都具有自行脑补“老师从昨晚的设备里端出假鸡蛋”画面的天资。

同样,本视频里卖刷卡机的“老杨”,并不靠刷卡偷钱发财,他是高价卖刷卡机,骗的是想刷卡偷钱的贼。而受骗的贼和记者,都具有在做实验时主动补全密码的天资。

现在好了,有了大媒体的微博推广,“老杨”的刷卡机一定热销。如果你觉得不会有人受骗,那就看看这条视频的评论吧(看上面的截图也可以):蠢货无数,只要再加一个“坏”字,就是“老杨”的潜在客户呢。

另:平时大家不是把记者叫妓者的么?和这些蠢货是同一伙人么?