int rand3() { int ret; do { ret = rand5(); }while(ret > 3); return ret; } int rand7() { int ret; do { ret = rand5() * 5 + rand5(); }while(ret > 21); return (ret % 7) + 1; }
[解决办法] 刚才那个不好,还这个看看 搞个复杂点的。 int rand3(){ static int val={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; static int pos =0; int index =rand5()+5*pos-1; pos++; if(pos==3)pos=0; return val[index]; }
int rand7(){ static int val={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21}; static int pos =0; int index =rand3()+3*pos-1; pos++; if(pos==7)pos=0; return val[index]; }