荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Version (Who makes history and why), 信区: Program
标  题: rand 和 random 有什么区别? (转载)
发信站: 荔园晨风BBS站 (Tue Mar 25 18:10:48 2003), 站内信件


rand()出的是伪随机数,即多次运行,出的结果是一样的,并不是真正的随机数。

可以用  srand((unsigned)time(0)); 先设置,这样每次运行都会不一样。

例如洗牌算法:

void card(int c[])   //洗牌算法
{
 for(int i=1;i<55;i++) c[i]=i;
 srand((unsigned)time(0));  //设置系统时间相关的随即数种子,保证每次运行不一样
 for(i=1;i<55;i++)
 {
  int r=rand()%55;
  if(r>0&&r!=i)
  {
   int tmp=c[i];
   c[i]=c[r];
   c[r]=tmp;
  }
 }
}
void displaycard()  //显示扑克牌
{
 int i,j,k;
 int c[55];
 memset(c,0,55*sizeof(int));
 card(c);
 int n=0;
 char p[4]; p[3]='\0';
 for(i=1;i<55;i++)
 {
  switch((c[i]-1)/13)
  {
  case 0:
   p[0]=6; j=c[i];
   break;
  case 1:
   p[0]=3; j=c[i]-13;
   break;
  case 2:
   p[0]=5; j=c[i]-13*2;
   break;
  case 3:
   p[0]=4; j=c[i]-13*3;
   break;
  case 4:
   p[0]=2; j=c[i]-13*4;
   break;
  }
  p[1]=j/10+'0'; p[2]=j%10+'0';
  cout<<setw(8)<<p;
  n++;
  if(n>=10) {cout<<endl; n=0;}
 }
 cout<<endl;
}


【 在 sleepgod (戒5子棋戒聊天~奋斗中~) 的大作中提到: 】
: random随机性更好一点吧
: 返回都是0 to RAND_MAX

   break;
  case 4:
   p[0]=2; j=c[i]-13*4;
   break;
  }
  p[1]=j/10+'0'; p[2]=j%10+'0';
  cout<<setw(8)<<p;
  n++;
  if(n>=10) {cout<<endl; n=0;}
 }
 cout<<endl;
}

--
                      *
          *                                  *
                          *             *
                      no more to say
                  ★     just wish you   ★
                            good luck

※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.1.50]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店