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;
	}
}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM