1.rand7执行两次,出来的数为a1=rand7()-1,a2=rand7()-1.
2.如果a1*7+a2<40,b=(a1*7+a2)/4+1;如果a1*7+a2>=40,重复第一步。
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
int rand7()
{
return rand()%7+1;//产生随机数1~7
}
int rand10()
{
int a1,a2,a3;
do
{
a1 = rand7()-1;//减1是为了能得到0,来获得rand10()中的1
a2 = rand7()-1;
a3 = a1*7+a2;
}while(a3>=40);//只有a3在0~39的范围内,才能使得rand10()得到1~10
return a3/4+1;//当a3为0~3,得到1,a3为4~7,得到2...a3为36~39得到10
}
int main()
{
while(1)
{
printf("%d\n",rand10());
Sleep(500);
}
return 0;
}