您的位置:首页 > 其它

题目:已知rand7() 可以产生 1~7 的7个数(均匀概率),利用rand7() 产生rand10() 1~10(均匀概率)

2016-01-18 23:01 316 查看
<span style="font-size:18px;">int rand10()
{
int temp;
int temp2;
do
{
temp = rand7();
} while (temp > 5);//temp 1到5
do
{
temp2 = rand7();
while (temp2 > 2);//temp2 1到2
return temp + (temp2 - 1) * 5;</span>
}
同理,当有rand5()时,产生1-7的随机数代码如下:
<pre name="code" class="cpp">int rand5()
{
return (rand() %5 +1);
}

int rand10()
{
int res,tmp;
do{
res = rand5();
}while(res > 4);
do{
tmp = rand5();
}while(tmp > 2);
return res + (tmp-1)*3;
}

int main()
{
srand((unsigned int) time(0));
for(int i = 0;i<10;i++)
{
cout << rand10() << endl;
}
return 0;
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: