洗牌算法
来源:互联网 发布:淘宝差评多长时间生效 编辑:程序博客网 时间:2024/05/16 00:57
给定N张扑克牌和一个随机函数,设计一个洗牌算法。
void
shuffle(
int
cards[],
int
n)
{
if
(cards==NULL)
return
;
srand
(
time
(0));
for
(
int
i=0;i<n-1;++i)
{
//保证每次第i位的值不会涉及到第i位以前
int
index=i+
rand
()%(n-i);
int
temp=cards[i];
cards[i]=cards[index];
cards[index]=temp;
}
}
srand(time(0)):
重置随机数种子,以当前时间为参数。
如果没调用srand(),你会发现你每次运行程序,rand()得到的序列值是不变的。然后srand里参数相同是,rand() 得到的序列也将相同。
srand目的就是让得到的序列看上去更贴近随机的概念。
1 0