zoukankan      html  css  js  c++  java
  • rand5生成rand3和rand7

    问题:
    给定一个函数rand5(),该函数可以随机生成1-5的整数,且生成概率一样。现要求使用该函数构造函数rand7(),使函数rand7()可以随机等概率的生成1-7的整数。

    思路:先扩区间,再取模,即构造大的整数区间,限制整数区间,最后映射整数区间。

    rand7

    int Rand5()
    {
    	return rand()%5+1;
    }
    int Rand7()
    {
    	int ret;
    	while(1)
    	{
    		//构造出等概率的范围(1-25)
    		ret = (Rand5()-1)*5 + Rand5();
    		//舍弃22-25
    		if(ret >= 22)
    			continue;
    		else
    			return ret%7+1;
    	}
    }
    

      

    rand3

    int Rand3()
    {
    	int ret;
    	while(1)
    	{
    		ret = (Rand5()-1)*5 + Rand5();
    		if(ret>=25)
    			continue;
    		else
    			return ret % 3 + 1;
    	}
    }
    

      

  • 相关阅读:
    C
    B
    A
    F
    C
    H
    Fang Fang hdu 5455
    Fire Net hdu1045(DFS)
    Sudoku HDU 5547(DFS)
    UVA 10200 Prime Time (打表)
  • 原文地址:https://www.cnblogs.com/lvpengbo/p/14470159.html
Copyright © 2011-2022 走看看