给定一个随机数范围,产生另一个随机数范围

#include <bits/stdc++.h>
using namespace std;
int rand6(){
	return rand()%6+1;
} 

int rand7(){
	int i = (rand6()-1)*6+rand6()-1; 
    while(i > 34)i = (rand6()-1)*6+rand6()-1;  //多出的35过滤掉。 不然会增加了获得1的概率 
	return i%7+1;
}

int main(){	
    srand((unsigned)time(0));
	for(int i=0;i!=20;++i)
	printf("%d ",rand7());
	return 0;
} 

以上例子的题目是rand6()产生rand7()

注意:不要简化(rand6()-1)*6+rand6()-1为(rand6()-1)*(6+1)   前后2个事件为独立事件。

原创文章 54 获赞 168 访问量 63万+

猜你喜欢

转载自blog.csdn.net/bojie5744/article/details/51168963