您的位置:首页 > 其它

已知rand7(),求rand10()

2011-10-09 18:17 155 查看
想这个也想了比较多,一般的思路就是相加,相加多少,但是还是感觉争议很大。在论坛上,也没有细看大师们的解答,自己今天的状态不好,晕。

所以,这里只是贴出我的代码,记录下。欢迎大牛指教!

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int rand7();
int rand10();
int main(void)
{
int i;
int a[10]={0,};
srand((unsigned int)time(NULL));
for(i = 0;i < 10000;i++)
{
a[rand10()-1]++;
}
for(i=0;i<10;i++)
{
printf("%4d  ",a[i]);
printf("%s\n","numbers");
}
return 0;
}
int rand7()
{
int temp = rand() % 7 +1 ;
return temp;
}
int rand10()
{
int temp ;
int xi;
while((temp = rand7()) < 6)
;
if(temp >= 6)
{
if(temp == 6) xi = 1;
else xi = 0;
while((temp = rand7())>5)
;
}
if(xi == 1)
return temp;
else
return temp + 5;
}


貌似rand()函数也不是绝对的随机的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐