利用随机生成器[1,5]生成随机数[1,7]

利用随机生成器rand5()可以生成随机数[1,5].

 

(1,5)的随机数,可以产生(0,1)的随机数;

7看成二进制111,用(0,1)产生的随机数分别对每位取值,如果取得的是000的话,舍去重新再取,得到的结果就是(1,7)之间的随机数.



//generate zero or one randly

int rand2()

{

	int result = rand5();

	while(result == 5)

	{

		result = rand5();
	}

	return result % 2; 
}



int rand7()

{

	int high, mid, low;

	high = rand2();

	mid = rand2();

	low = rand2();

	while(high == 0 && mid == 0 && low == 0)

	{

		high = rand2();

		mid = rand2();

		low = rand2();
	}

	return  low + mid*2 + high *4;

}


你可能感兴趣的:(利用随机生成器[1,5]生成随机数[1,7])