超简单的扑克算法——Fisher–Yates shuffle算法

首先把此问题抽象成得到一个0~N的随机顺序数组

此算法思路为:

每次随机出一个整数作为被抽出的位置 ,再将对应位置的数抽出,然后将该数与数组中最后的元素相交换;然后缩小选取数组的范围,去掉最后的元素,直到数组剩余一个元素的时候结束。

实现代码如下:

void Poker(int* array, int l)  
{  
    int i = l; //数组长度length 

    if (i == 0)  return;

    while (--i)  
    {  
        int j = rand() % (i+1);
        int temp = array[i];  
        array[i] = array[j];  
        array[j] = temp;  
    }  
}  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值