关于随机函数的新问题

hw20052768 2006-05-31 11:33:04
void makepack()
{
int temp,r;
for(int i=0;i<52;i++)
{
r=rand()%52;
temp=pk[i];
pk[i]=pk[r];
pk[r]=temp;
}
}
这是个随机函数,其中对i的赋的初始值不同,我觉得应该是决定换牌的次数,我把i定义成i=51,它就永远只有一种随机,但是我定义成50,应该就只有两种随机,但是运行后却会有多种随机,请问这是怎么回事?
源代码如下:
#include <iostream.h>
#include <stdlib.h>
int pk[]={114,102,103,104,105,106,107,108,109,110,111,112,113,
214,202,203,204,205,206,207,208,209,210,211,212,213,
314,302,303,304,305,306,307,308,309,310,311,312,313,
414,402,403,404,405,406,407,408,409,410,411,412,413};
int a[13],b[13],c[13],d[13];
void makepack()
{
int temp,r;
for(int i=0;i<52;i++)
{
r=rand()%52;
temp=pk[i];
pk[i]=pk[r];
pk[r]=temp;
}
}
void fapack()
{
int i,j;
j=0;
for(i=0;i<=51;i++)
{
a[j]=pk[i];
i++;
b[j]=pk[i];
i++;
c[j]=pk[i];
i++;
d[j]=pk[i];
j++;
}
}
void sort(int x[13])
{
for(int i=12;i>0;--i)
for(int k=0;k<i;++k)
if(x[k]<x[i])
{
int temp=x[k];
x[k]=x[i];
x[i]=temp;
}
}
void disp(int x)
{
int z=x/100;
int y=x-100*z;
switch(z)
{
case 1:cout<<char(6);break;
case 2:cout<<char(3);break;
case 3:cout<<char(4);break;
case 4:cout<<char(5);break;
}
switch(y)
{
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:cout<<y<<" ";break;
case 11:cout<<"J"<<" ";break;
case 12:cout<<"Q"<<" ";break;
case 13:cout<<"K"<<" ";break;
case 14:cout<<"A"<<" ";break;
}
}
void main()
{
int times;
for(int l=0;l<=99;l++)
{
cout<<"请输入次数:";
cin>>times;
makepack();
fapack();
sort(a);
sort(b);
sort(c);
sort(d);
cout<<endl;
for(int i=0;i<13;i++)
{
disp(a[i]);
}
cout<<endl;
for(i=0;i<13;i++)
{
disp(b[i]);
}
cout<<endl;
for(i=0;i<13;i++)
{
disp(c[i]);
}
cout<<endl;
for(i=0;i<13;i++)
{
disp(d[i]);
}
cout<<endl;
}
}
...全文
70 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
吃狼的豆腐 2006-05-31
  • 打赏
  • 举报
回复
不会
hw20052768 2006-05-31
  • 打赏
  • 举报
回复
不会你回什么贴啊!!!
飞哥 2006-05-31
  • 打赏
  • 举报
回复
rand()%52; 结果每次都一样啊
:(
来个种子:)
yeahspyme 2006-05-31
  • 打赏
  • 举报
回复
我还不是很明白,“只有一种随机”是指牌的次序吗?
你是通过交换两个数组单元来洗牌的哈,r=rand()%52每次调用值都不一样的吧
所以牌次也不会是一种随机结果

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧