zoukankan      html  css  js  c++  java
  • 一道算法题

     
     已知一个函数f可以等概率的得到1-5间的随机数,问怎么等概率的得到1-7的随机数。 

    ----

    连续调用函数f两次,就能得到5*5=25种可能的组合串;抛弃最后的四个组合串,就有21中可能性,正好是7的倍数。

    php的简陋实现如下:

    <?php
    
    function rand5to7 ($p)
    {
        switch ($p) {
            case '11':    
            case '12':    
            case '13':
                return 1;
                break;
            case '14':    
            case '15':    
            case '21':
                return 2;
                break;    
            case '22':    
            case '23':    
            case '24':
                return 3;
                break;    
            case '25':    
            case '31':    
            case '32':    
                return 4;
                break;    
            case '33':    
            case '34':    
            case '35':    
                return 5;
                break;    
            case '41':    
            case '42':    
            case '43':    
                return 6;
                break;    
            case '44':    
            case '45':    
            case '51':    
                return 7;
                break;    
            case '52':    
            case '53':    
            case '54':    
            case '55':    
                return false;
                break;    
        }
    }
    
    function rand7 () {
        while (true) {
            $a = rand(1, 5);
            $b = rand(1, 5);
            $random = rand5to7($a.$b."");
            if ($random) {
                return $random;
                break;
            }
        }
    }
    
    $array = array();
    
    $i = 700000;
    while ($i -- > 0) {
        $ext = rand7();
        $array["key$ext"] ++;
    }
    
    ksort($array);
    echo print_r($array);

    结果:

    vxx:~/jeff # php c.php 
    Array
    (
        [key1] => 100257
        [key2] => 99922
        [key3] => 99595
        [key4] => 100063
        [key5] => 100088
        [key6] => 100194
        [key7] => 99881
    )
    

      

  • 相关阅读:
    cocos2d翻牌效果实现
    ShareSDK
    cocos2diphone版本选择
    UITextView设置透明背景
    iOS常用第三方类库
    CCMenu布局
    macosx下安装mysql
    mac截图
    iPhone对OpenGL ES的支持
    cocos2d下action和线程
  • 原文地址:https://www.cnblogs.com/cloudstorage/p/3130889.html
Copyright © 2011-2022 走看看