荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: 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软件 网络书店