zoukankan      html  css  js  c++  java
  • Simulate a seven-sided die using only five-sided

    问题描述:

    如题

    转述一下问题,就是说你现在有一个正五面体骰子,然后你怎么用这个正五面体骰子去模拟一个正七面体骰子。

    这个问题我接触到几种方法,下面一一阐述。

    方法一:

    rand7()=( rand5()+rand5()+rand5()+rand5()+rand5()+rand5()+rand5() ) % 7 + 1

    这个方法可以这么来理解五面体筛子实验七次,点数和在7到35之间,点数和的分布是均匀的。所以模7加一就可以近似模拟七面体筛子了。

    评价:该方法简单易理解,然而只是“近似”七面体筛子,因为数字1-7并不是均匀出现的。

    方法二:

    function rand7() {
    throw the dice twice and perform the following checks
    1,1 return 1
    1,2 return 2
    1,3 return 3
    1,4 return 4
    1,5 return 5
    2,1 return 6
    2,2 return 7
    2,3 return 1
    2,4 return 2
    2,5 return 3
    3,1 return 4
    ...
    ...
    ...
    5,1 return 7 [at this point we have returned numbers from 1 to 7, 3 times each]
    5,2 rand7()
    5,3 rand7()
    5,4 rand7()
    5,5 rand7()
    }

    显然,该方法看起来可以做到完全模拟正七面体,其实不然,稍微分析一下你会发现你陷入了无穷循环。从逻辑上来说,这个方法为了得到原先不存在的rand7()而递归调用不存在的东西(也就是rand7()),那么显然这种方法是不可以的。

    方法三

    不可能,我们不可能用五面体筛子去完全模拟七面体筛子。

    下面给出证明。

    首先我们注意到5跟7是互质的,那么无论什么方法用五面体筛子去模拟七面体筛子,总要实验五面体筛子好多次,我们假设n次,那么得到实验结果有多少种情况呢?

  • 相关阅读:
    买房的贷款时间是否是越长越好?https://www.zhihu.com/question/20842791
    asp.net cookie and session
    leelazero and google colab
    download file by python in google colab
    physical processor, core, logical processor
    通过powershell操作eventlog
    openxml in sql server
    get the page name from url
    How to Execute Page_Load() in Page's Base Class?
    Difference between HttpContext.Request and Request
  • 原文地址:https://www.cnblogs.com/xubenben/p/3388432.html
Copyright © 2011-2022 走看看