求int rand3() ,返回1-3之间的随机数,要求每个数的概率相等。
然后求int rand7(),要求一样每个数的概率相等。
//不知概率是否相等
#include<stdio.h>
#include<stdlib.h>
#define STAR "**************************"
int rand5(void)
{
return rand()%5 +1;
}
int rand3()
{
int a = rand5();
if(a == 1)
return 1;
else if(a == 2)
return 2;
else if(a == 3)
return 3;
else
return rand3();
}
int rand7()
{
int a = rand3();
if(a == 1)
return rand3();
else if(a == 2)
return rand3()+3;
else
{
if(rand3() == 1)
return 7;
else
return rand7();
}
}
int main()
{
int i;
for(i = 0 ; i < 5;i++)
{
printf("%d ",rand5());
}
printf("%s\n",STAR);
for(i = 0 ; i < 5;i++)
{
printf("%d ",rand3());
}
printf("%s\n",STAR);
for(i = 0 ; i < 5;i++)
{
printf("%d ",rand7());
}
return 0 ;
}
本文详细介绍了如何利用rand5()函数实现两个不同范围的均匀随机数生成器:rand3()用于生成1-3之间的随机数,rand7()用于生成1-7之间的随机数。通过巧妙地调用和重用rand5(),作者展示了随机数生成的灵活性和创造性。
3328

被折叠的 条评论
为什么被折叠?



