洗牌算法

来源:互联网 发布:淘宝差评多长时间生效 编辑:程序博客网 时间:2024/05/16 00:57

给定N张扑克牌和一个随机函数,设计一个洗牌算法。

voidshuffle(intcards[],intn)

{
    if(cards==NULL)
        return;
 
    srand(time(0));
 
    for(inti=0;i<n-1;++i)
    {
        //保证每次第i位的值不会涉及到第i位以前
        intindex=i+rand()%(n-i);
        inttemp=cards[i];
        cards[i]=cards[index];
        cards[index]=temp;
    }
}

srand(time(0)):

重置随机数种子,以当前时间为参数。

如果没调用srand(),你会发现你每次运行程序,rand()得到的序列值是不变的。
然后srand里参数相同是,rand() 得到的序列也将相同。

srand目的就是让得到的序列看上去更贴近随机的概念。


1 0
原创粉丝点击