用python驗(yàn)證蒙提霍爾問(wèn)題

最初看到這個(gè)問(wèn)題是初中的時(shí)候買(mǎi)了一本有關(guān)數(shù)學(xué)謎題的書(shū)里面概率論的一張的課后拓展就是說(shuō)到三門(mén)問(wèn)題,當(dāng)時(shí)作為一個(gè)擴(kuò)展閱讀看了一下,里面說(shuō)到了一個(gè)世界智商最高的女人秒殺了美國(guó)一大群的數(shù)學(xué)高材生的精彩故事(比較夸張),當(dāng)時(shí)對(duì)這個(gè)問(wèn)題也是似懂非懂。

什么是蒙提霍爾問(wèn)題?

蒙提霍爾
蒙提霍爾

蒙提霍爾問(wèn)題,亦稱(chēng)為蒙特霍問(wèn)題或三門(mén)問(wèn)題(英文:Monty Hall problem),是一個(gè)源自博弈論的數(shù)學(xué)游戲問(wèn)題,大致出自美國(guó)的電視游戲節(jié)目Let's Make a Deal。問(wèn)題的名字來(lái)自該節(jié)目的主持人蒙提·霍爾(Monty Hall)。

最初的表述是:

參賽者會(huì)看見(jiàn)三扇關(guān)閉了的門(mén),其中一扇的后面有一輛汽車(chē),選中后面有車(chē)的那扇門(mén)就可以贏得該汽車(chē),而另外兩扇門(mén)后面則各藏有一只山羊。當(dāng)參賽者選定了一扇門(mén),但未去開(kāi)啟它的時(shí)候,節(jié)目主持人開(kāi)啟剩下兩扇門(mén)的其中一扇,露出其中一只山羊。主持人其后會(huì)問(wèn)參賽者要不要換另一扇仍然關(guān)上的門(mén)。
問(wèn)題是:換另一扇門(mén)會(huì)否增加參賽者贏得汽車(chē)的機(jī)會(huì)率?

這個(gè)古老的問(wèn)題一經(jīng)提出就引起了劇烈的爭(zhēng)論,有人認(rèn)為換與不換最終得到車(chē)的概率都是1/2,有人認(rèn)為換門(mén)之后得到車(chē)的概率更大,應(yīng)該選擇換門(mén)之后得到車(chē)的概率為2/3在撰寫(xiě)這篇文章的時(shí)候在果殼上還有人在為此爭(zhēng)吵,知乎上也有許多關(guān)于這方面的討論,其實(shí)這些爭(zhēng)論很多情況下都是因這個(gè)問(wèn)題的模糊表述所引起的,關(guān)鍵點(diǎn)在于主持人對(duì)于門(mén)后的情況是否了解

  1. 如果主持人事先知道哪個(gè)門(mén)里有山羊并且他特意選擇了有山羊的門(mén)打開(kāi)了,那么參賽者應(yīng)該換另一扇門(mén),這可以將他勝利的概率從1/3升到2/3
  2. 如果主持人事先不知道哪個(gè)門(mén)里有山羊或者他只是隨機(jī)的選擇了一個(gè)門(mén),但事實(shí)發(fā)現(xiàn)里面恰好是山羊。這時(shí)候參賽者沒(méi)有換門(mén)的必要,勝利概率總是1/2

為了后續(xù)的討論,這里采用維基百科上對(duì)于這一個(gè)問(wèn)題的不含糊的定義

嚴(yán)格的表述如下:

  • 參賽者在三扇門(mén)中挑選一扇。他并不知道內(nèi)里有什么。
  • 主持人知道每扇門(mén)后面有什么。
  • 主持人必須開(kāi)啟剩下的其中一扇門(mén),并且必須提供換門(mén)的機(jī)會(huì)。
  • 主持人永遠(yuǎn)都會(huì)挑一扇有山羊的門(mén)。
    • 如果參賽者挑了一扇有山羊的門(mén),主持人必須挑另一扇有山羊的門(mén)。
    • 如果參賽者挑了一扇有汽車(chē)的門(mén),主持人隨機(jī)在另外兩扇門(mén)中挑一扇有山羊的門(mén)。
  • 參賽者會(huì)被問(wèn)是否保持他的原來(lái)選擇,還是轉(zhuǎn)而選擇剩下的那一道門(mén)。

那么這個(gè)問(wèn)題這可以很好的理解了,引用維基的一幅圖片解析:


蒙提霍爾解答
蒙提霍爾解答

有三種可能的情況,全部都有相等的可能性(1/3):

  • 參賽者挑汽車(chē),主持人挑兩頭羊的任何一頭。轉(zhuǎn)換將失敗。
  • 參賽者挑A羊,主持人挑B羊。轉(zhuǎn)換將贏得汽車(chē)。
  • 參賽者挑B羊,主持人挑A羊。轉(zhuǎn)換將贏得汽車(chē)。

所以玩家選擇換門(mén)之后獲勝的概率應(yīng)為2/3

證明?

蒙提霍爾解答
蒙提霍爾解答

定義:

  • 事件A為一開(kāi)始玩家選擇的一扇門(mén)
  • 事件H為最后門(mén)后的結(jié)果
  • 如果是選擇不換門(mén)的策略

因?yàn)檫x擇的是不交換的策略,所有只有一開(kāi)始選中的是汽車(chē),最后才能選中汽車(chē)。

  • 選擇交換門(mén)的策略

因?yàn)檫x擇的是交換的策略,所有只有一開(kāi)始選中的是羊,最后才能選中汽車(chē)。

程序驗(yàn)證

實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn),在流言終結(jié)者看到他們?nèi)斯ぶ貜?fù)這個(gè)實(shí)驗(yàn)區(qū)驗(yàn)證,發(fā)現(xiàn)這樣很浪費(fèi)時(shí)間。何通過(guò)計(jì)算機(jī)去去模擬這一段過(guò)程呢?
下面使用python程序來(lái)模擬這一段過(guò)程:

from __future__ import division
import logging
from matplotlib import pyplot as plt
import numpy as np
import random


class MontyHall(object):
    """docstring for MontyHall"""

    def __init__(self, num=3):
        """
        創(chuàng)建一個(gè)door列表
        0 代表關(guān)門(mén)
        1 表示后面有車(chē)
        -1 代表門(mén)被打開(kāi)
        """
        super(MontyHall, self).__init__()
        self.doors = [0] * num
        self.doors[0] = 1
        self.choice = -1
        self.exclude_car = False
        self.shuffle()

    def shuffle(self):
        """  
        開(kāi)始新游戲
        重新分配門(mén)后的東西
        """
        if self.exclude_car == True:
            self.doors[0] = 1
            self.exclude_car = False
        for i in xrange(len(self.doors)):
            if self.doors[i] == -1:
                self.doors[i] = 0
        random.shuffle(self.doors)

    def make_choice(self):
        """
        player隨機(jī)選擇一扇門(mén)
        """
        self.choice = random.randint(0, len(self.doors) - 1)
        logging.info("choice: %d" % self.choice)
        logging.info("original: %s" % self.doors)

    def exclude_doors(self):
        """
        主持人知道門(mén)后的情況排除門(mén)
        直到剩余兩扇門(mén)
        """
        to_be_excluded = []
        for i in xrange(len(self.doors)):
            if self.doors[i] == 0 and self.choice != i:
                to_be_excluded.append(i)  
        random.shuffle(to_be_excluded)
        for i in xrange(len(self.doors) - 2):
            self.doors[to_be_excluded[i]] = -1
        logging.info("final: %s" % self.doors)

    def random_exclude_doors(self):
        """
        主持人并不知道門(mén)后面的情況隨機(jī)的開(kāi)門(mén)
        直到剩余兩扇門(mén)
        """
        to_be_excluded = []
        for i in xrange(len(self.doors)):
            if self.doors[i] != -1 and i != self.choice:
                to_be_excluded.append(i)  
        random.shuffle(to_be_excluded)
        for i in xrange(len(self.doors) - 2):
            if self.doors[to_be_excluded[i]] == 1:
                self.exclude_car = True
            self.doors[to_be_excluded[i]] = -1
        logging.info("final: %s" % self.doors)

    def change_choice(self):
        """
        player改變選擇
        """
        to_change = []
        for i in xrange(len(self.doors)):
            if self.doors[i] != -1 and i != self.choice:
                to_change.append(i)
        self.choice = random.choice(to_change)
        logging.info("choice changed: %d" % self.choice)

    def random_choice(self):
        """
        player 第二次隨機(jī)選擇門(mén)
        """
        to_select = []
        for i in xrange(len(self.doors)):
            if self.doors[i] != -1:
                to_select.append(i)
        self.choice = random.choice(to_select)
        logging.info("random choice : %d" % self.choice)


    def show_answer(self):
        """
        展示門(mén)后的情況
        """
        logging.info(self.doors)

    def check_result(self):
        """
        驗(yàn)證結(jié)果
        """
        got_it = False
        if self.doors[self.choice] == 1:
            got_it = True
        return got_it

模擬1000輪,每一輪重復(fù)試驗(yàn)1000次

  • 不改變選擇:
def unchange_choice_test(n):
    """
    不改變初始的選擇
    """
    result = {}
    game = MontyHall()
    for i in xrange(n):
        game.shuffle()
        game.make_choice()
        game.exclude_doors()
        if game.check_result():
            result["yes"] = result.get("yes", 0) + 1
        else:
            result["no"] = result.get("no", 0) + 1
    for key in result:
        print "%s: %d" % (key, result[key])
    return result["yes"] / n

if __name__ == '__main__':
    logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.WARNING)
    results = []
    test_num = 1000
    round_num = 1000
    for x in xrange(0,round_num):
        results.append(change_random_test(test_num) )

    y_mean = np.mean(results)
    y_std = np.std(results)
    x = range(0,round_num)
    y = results
    plt.figure(figsize=(8,4))
    
    plt.xlabel("round")
    plt.ylabel("frequency")
    plt.title("The frequency of the success")
    tx = round_num / 2
    ty = y_mean
    label_var = "$\sigma \left( X \\right)=$%f" % y_std
    label_mean = "$ X =$%f" % y_mean
    p1_label = "%s and %s" % (label_var,label_mean)
    p1 = plt.plot(x,y,"-",label=p1_label,linewidth=2)
    plt.legend(loc='upper left')
    

    pl2 = plt.figure(2)
    plt.figure(2)
    plt.hist(results,40,normed=1,alpha=0.8)
    plt.show()

結(jié)果:


此處輸入圖片的描述
此處輸入圖片的描述

概率分布:


此處輸入圖片的描述
此處輸入圖片的描述

成功的概率均值在 1/3 附近
  • 改變選擇:
def change_choice_test(n):
    """
    交換選擇的門(mén)
    """
    result = {}
    game = MontyHall()
    for i in xrange(n):
        game.shuffle()
        game.make_choice()
        game.exclude_doors()
        game.change_choice()
        if game.check_result():
            result["yes"] = result.get("yes", 0) + 1
        else:
            result["no"] = result.get("no", 0) + 1
    for key in result:
        print "%s: %d" % (key, result[key])
    return result["yes"] / n

同樣的方法繪圖得到結(jié)果:


此處輸入圖片的描述
此處輸入圖片的描述

概率分布:


此處輸入圖片的描述
此處輸入圖片的描述

成功的概率均值在 2/3 附近

通過(guò)上面的分析與模擬可知最佳的策略當(dāng)然就是換門(mén)。

更加深入的討論

  • 如果門(mén)的數(shù)量不止是3個(gè),如果是50扇門(mén)呢?
此處輸入圖片的描述
此處輸入圖片的描述

這種情況下,主持人打開(kāi)48扇都是羊的門(mén)后,再給你選擇,很多人這個(gè)時(shí)候應(yīng)該就不會(huì)固守那1/2,而會(huì)選擇換門(mén)
把門(mén)的數(shù)據(jù)增大到100,1000,這種情況會(huì)更加明顯。
還是通過(guò)一段程序模擬說(shuō)明:

def change_choice_test_large(n,m):
    """
    交換選擇的門(mén)
    """
    result = {}
    game = MontyHall(m)
    for i in xrange(n):
        game.shuffle()
        game.make_choice()
        game.exclude_doors()
        game.change_choice()
        if game.check_result():
            result["yes"] = result.get("yes", 0) + 1
        else:
            result["no"] = result.get("no", 0) + 1
    for key in result:
        print "%s: %d" % (key, result[key])
    return result["yes"] / n
    
    
if __name__ == '__main__':
    logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.WARNING)
    results = []
    test_num = 1000
    round_num = 1000
    for x in xrange(0,round_num):
        results.append(change_choice_test_large(test_num,50) )

結(jié)果:



這時(shí)候就要選擇交換門(mén)

  • 遇到這種情況我很困惑,我決定拋硬幣決定,這個(gè)時(shí)候成功的概率?

這是第3種策略,成功的概率和硬幣有關(guān),也就是1/2,這種情況就是從剩下的門(mén)中隨機(jī)選擇一扇,這個(gè)策略從上面分析來(lái)看不是最好的,但是比不改變的策略要好。
程序的模擬結(jié)果:


此處輸入圖片的描述
此處輸入圖片的描述

此處輸入圖片的描述
此處輸入圖片的描述
  • 比如門(mén)意外打開(kāi)的情況呢,也就是上面描述的第二種情況(主持在不知門(mén)后的情況下打開(kāi)門(mén)呢)?

這種情況下其實(shí)就是一個(gè)條件概率,事件A是玩家最后開(kāi)到的是車(chē),事件B是主持人打開(kāi)的門(mén)是羊。

因?yàn)橹挥兄鞒秩碎_(kāi)到是羊的情況下,玩家才有可能開(kāi)到車(chē)所以


設(shè)玩家第一次選擇的門(mén)為事件C

  • 不交換策略下的條件概率是:
QQ截圖20150510140602.png
  • 交換策略下的條件概率是:

因此在主持人不知道門(mén)后的情況下打開(kāi)一扇,然后發(fā)現(xiàn)門(mén)后是羊的情況下,換門(mén)與不換門(mén)最終的概率都是1/2
還是可以通過(guò)程序進(jìn)行模擬:

def unknown_doors_choice_test(n):
    """
    主持人并不知道門(mén)后面的情況隨機(jī)的開(kāi)門(mén)
    交換選擇的門(mén)
    """
    result = {}
    game = MontyHall()
    continue_count = 0
    for i in xrange(n):
        game.shuffle()
        game.make_choice()
        game.random_exclude_doors()
        game.change_choice()
        if game.exclude_car == False:
            continue_count += 1
        if game.check_result():
            result["yes"] = result.get("yes", 0) + 1
        else:
            result["no"] = result.get("no", 0) + 1
    #for key in result:
    #    print "%s: %d" % (key, result[key])
    logging.info("continue_count: %d" % continue_count)
    if continue_count == 0:
        return 0.0
    return result["yes"] / continue_count   
此處輸入圖片的描述
此處輸入圖片的描述

此處輸入圖片的描述
此處輸入圖片的描述

在這種情況下交換門(mén)也沒(méi)有提升成功的概率


總結(jié)

今天寫(xiě)的這篇東西也算是了解我童年的一個(gè)遺憾,人的直覺(jué)有時(shí)候是很不可靠,要擺脫個(gè)人局限的認(rèn)知才能擁抱更大的世界。
什么?看完這些解析,你還覺(jué)得不滿(mǎn)意那么你還可以從下面的參考中尋找更好的解析,本文撰寫(xiě)過(guò)程有部分的圖片引用自一下的參考,如果你還有疑問(wèn)歡迎你聯(lián)系我進(jìn)一步的討論。

練習(xí)

下面是三門(mén)問(wèn)題的兩個(gè)翻版,引用自三門(mén)問(wèn)題及相關(guān)

女孩的概率

  • 你結(jié)交一位新朋友,問(wèn)她是否有孩子。她說(shuō)有,有兩個(gè)。你問(wèn),有女孩嗎?她說(shuō)有。那么,兩個(gè)都是女孩的概率是多少?

答:三分之一。因?yàn)樯鷥蓚€(gè)孩子的可能性有四種等可能:BB、GG、BG、GB(即男男、女女、男女、女男)。 因?yàn)槲覀円阎辽儆幸粋€(gè)女兒,所以BB是不可能的。因此GG是可能出現(xiàn)的三個(gè)等可能的結(jié)果之一,所以?xún)蓚€(gè)孩子都是女兒的概率為三分之一。這對(duì)應(yīng)了三門(mén)問(wèn)題的第一種情況。

  • 你結(jié)交一位新朋友,問(wèn)她是否有孩子。她說(shuō)有,有兩個(gè)。你問(wèn),有女孩嗎?她說(shuō)有。第二天,你看見(jiàn)她帶了一個(gè)小女孩。你問(wèn)她,這是你女兒?jiǎn)幔克f(shuō),是。她的兩個(gè)孩子都是女孩的概率是多少?

這個(gè)概率和生女孩的概率相同,二分之一。這似乎非常奇怪,因?yàn)槲覀兯鶕碛械男畔⒖雌饋?lái)并不比第一種情況時(shí)多,但概率卻不同。但是這里的問(wèn)題其實(shí)是,那個(gè)你沒(méi)>見(jiàn)過(guò)的孩子是女孩的概率是多少?這個(gè)概率和生女孩的概率相同,二分之一。
這對(duì)應(yīng)了三門(mén)問(wèn)題的第二種情況。當(dāng)然這里也有語(yǔ)言問(wèn)題,必須假定這位母親不是特定帶出一個(gè)小女孩來(lái)給你看的。也就是說(shuō)你只是碰巧發(fā)現(xiàn)了它是位小女孩。這取決于是判斷選擇 或q 隨機(jī)選擇。如果是被你碰巧撞見(jiàn)這是屬于隨機(jī)選擇。這就對(duì)應(yīng)了三門(mén)問(wèn)題的第二種情況。這其實(shí)是增加了信息的。否則如果她主動(dòng)帶一個(gè)小女孩過(guò)來(lái)給你,則屬于判斷選擇。
你得到的答案依賴(lài)于所講的故事;它依賴(lài)于你是如何得知至少一個(gè)孩子是女孩的。

三囚犯問(wèn)題

  • 亞當(dāng)、比爾和查爾斯被關(guān)在一個(gè)監(jiān)獄里,只有監(jiān)獄看守知道誰(shuí)會(huì)被判死刑,另外兩位將會(huì)獲釋。有1/3的概率會(huì)被處死刑的亞當(dāng),給他母親寫(xiě)了一封信,想要獲釋的比爾或查爾斯幫忙代寄。當(dāng)亞當(dāng)問(wèn)看守他應(yīng)當(dāng)把他的信交給比爾還是查爾斯時(shí),這位富有同情心的看守很為難。他認(rèn)為如果他把將要獲釋的人的名字告訴亞當(dāng),那么亞當(dāng)就會(huì)有1/2的概率被判死刑,因?yàn)槭O碌娜撕蛠啴?dāng)這兩人中一定有一個(gè)人被處死。如果他隱瞞這信息,亞當(dāng)被處死的概率是1/3。既然亞當(dāng)知道其他兩人中必有一人會(huì)獲釋?zhuān)敲磥啴?dāng)自己被處死的概率怎么可能會(huì)因?yàn)榭词馗嬖V他其他兩人中被獲釋者的姓名后而改變呢?

正確的答案是:看守不用當(dāng)心,因?yàn)榧词拱勋@釋人的姓名告訴亞當(dāng),亞當(dāng)被處死的概率仍然是1/3,沒(méi)有改變。但是,剩下的那位沒(méi)被點(diǎn)名的人就有2/3的概率被處死(被處死的可能性升高了)。如果這個(gè)問(wèn)題換一種說(shuō)法,就是看守?zé)o意間說(shuō)出了查爾斯不會(huì)死。那么概率就會(huì)發(fā)生改變。
這個(gè)其實(shí)和三門(mén)問(wèn)題是一致的。你可以把獄卒當(dāng)成主持人,被處死當(dāng)成是大獎(jiǎng),那么這個(gè)是對(duì)應(yīng)于三門(mén)問(wèn)題的第一種情況,就是主持人知道門(mén)后面的情況。獄卒說(shuō)出誰(shuí)會(huì)被釋放,相當(dāng)于主持人打開(kāi)一扇門(mén)。但是因?yàn)槿敉絾?wèn)題不能選擇,也就相當(dāng)于三門(mén)問(wèn)題中的不換門(mén)的策略。最終的概率還是1/3是沒(méi)有發(fā)生改變的。
為了避免產(chǎn)生歧義,規(guī)定一下:
1.如果(亞當(dāng),查爾斯)被釋放,那么獄卒會(huì)告訴亞當(dāng):"查爾斯被釋放"。
2.如果(亞當(dāng),比爾)被釋放,那么獄卒會(huì)告訴亞當(dāng):"比爾被釋放"
3.如果(查爾斯,比爾)被釋放,那么獄卒會(huì)以1/2的概率告訴亞當(dāng):"查爾斯被釋放"或者"比爾被釋放"
意思就很明顯了,在獄卒說(shuō)出比爾被釋放的條件下,亞當(dāng)被釋放的概率是?用條件概率算一下。
定義事件:

A :獄卒說(shuō)出"比爾被釋放"
B :代表亞當(dāng)被釋放。


那什么時(shí)候才是1/2的概率呢?
規(guī)則3更改為:如果(查爾斯,比爾)被釋放,那么獄卒會(huì)告訴亞當(dāng)"比爾被釋放"
這個(gè)時(shí)候計(jì)算就是:



那如果規(guī)則3改為:如果(查爾斯,比爾)被釋放,那么獄卒會(huì)告訴亞當(dāng)"查爾斯被釋放"
這個(gè)時(shí)候:亞當(dāng)被釋放的概率就會(huì)變?yōu)?
問(wèn)題在于規(guī)則2和規(guī)則3下說(shuō)"比爾被釋放"不是等概率發(fā)生的。

類(lèi)似的問(wèn)題還有

  • 拋兩枚硬幣其中有一枚硬幣是正面,問(wèn)兩枚硬幣都是正面的概率是?
  • 拋兩枚硬幣其中第一枚硬幣是正面,問(wèn)兩枚硬幣都是正面的概率是?

the end.


參考:

  1. 蒙提霍爾問(wèn)題 - 維基百科,自由的百科全書(shū)

  2. 三扇門(mén)問(wèn)題 | 左岸讀書(shū)

  3. 蒙提霍爾問(wèn)題(又稱(chēng)三門(mén)問(wèn)題、山羊汽車(chē)問(wèn)題)的正解是什么?

  4. 趣味編程:三門(mén)問(wèn)題

  5. 三門(mén)問(wèn)題及相關(guān)

  1. 換還是不換?爭(zhēng)議從未停止過(guò)的三門(mén)問(wèn)題

  2. 在「三門(mén)問(wèn)題」中,參與者應(yīng)該選擇「換」還是「不換」?主持人是否知道門(mén)后情形對(duì)結(jié)論有何影響?

  3. THE MONTY HALL PROBLEM

  4. 流言終結(jié)者第九季

  5. 某個(gè)家庭中有 2 個(gè)小孩,已知其中一個(gè)是女孩,則另一個(gè)是男孩的概率是多少?-知乎

  6. 從貝葉斯定律的角度理解“蒙提霍爾問(wèn)題”和“三個(gè)囚犯問(wèn)題”

  7. 三個(gè)囚犯問(wèn)題,求解?


更新日志:

  • 2015-05-20 增加三囚徒問(wèn)題的解答
  • 2015-05-09 第一次撰寫(xiě)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,837評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,196評(píng)論 3 414
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 175,688評(píng)論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 62,654評(píng)論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,456評(píng)論 6 406
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 54,955評(píng)論 1 321
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,044評(píng)論 3 440
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,195評(píng)論 0 287
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,725評(píng)論 1 333
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,608評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,802評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,318評(píng)論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,048評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,422評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 35,673評(píng)論 1 281
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,424評(píng)論 3 390
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,762評(píng)論 2 372

推薦閱讀更多精彩內(nèi)容

  • 今天看文章時(shí)無(wú)意間看到了一個(gè)詞,“終生皆苦”。這個(gè)充滿(mǎn)佛家意味的詞,就像深山寺廟里厚重深邃的鐘聲,穿過(guò)我的胸膛,沖...
    十里云月閱讀 393評(píng)論 0 0
  • ——產(chǎn)品例會(huì)有感 很多人在這個(gè)創(chuàng)業(yè)大潮中都顯得躍躍欲試。認(rèn)為就憑平時(shí)工作這股勁,再吃多一兩倍的苦,成功指日可待。 ...
    三目楊戩閱讀 609評(píng)論 1 2