| 
			
	
	
		| http://www.mitbbs.com/article_t/Quant/31188147.html 
 基本方法就是产生一串序列
 1,4,5,3,2,4
 然后前后两两划分为一组,比如(1,4),(5,3),因为总共有5X5 =25种等概率的可能,不能被7整除,可以拿掉4种,这样剩下21种,编号为#1,#2,...#21
 如果出现#1,#2,#3则输出1,....如果出现#19,#20,#21则输出7,如果出现了被拿掉的那4种情况则忽略之
 | 
算法思路是:1. 通过 rand5()*5+rand5() 产生 6 7 8 9 10 11 …… 26,27 28 29 30 这25个数,每个数的出现机率相等2. 只需要前面 3*7 个数,所以舍弃后面的4个数3. 将 6 7 8 转化为 1,9 10 11 转化为 2,……,24 25 26 转化为 7。公式是 (a-3)/3
 
 1 int rand7()2 {
 3 int a;
 4 while( (a=rand5()*5+rand5()) > 26 );
 5 return (a-3)/3;
 6 }
   
	    
    
 |