#include <stdlib.h>
#include <stdio.h>
#include <utility>
#include <time.h>
#include <assert.h>
int GCardSrc[54];
void ShuffleCard( int *pDestCard, int PlayerCardCnt, int PlayerCnt )
{
assert( nullptr != pDestCard );
assert( PlayerCardCnt * PlayerCnt <= sizeof( GCardSrc ) / sizeof( GCardSrc[0] ) );
int idx = 0;
for( int i = 0; i < PlayerCardCnt * PlayerCnt; ++i )
{
idx = rand() % ( sizeof( GCardSrc ) / sizeof( GCardSrc[0] ) - i );
pDestCard[ i ] = GCardSrc[ idx ];
std::swap( GCardSrc[ sizeof( GCardSrc ) / sizeof( GCardSrc[0] ) - i - 1 ], GCardSrc[ idx ] );
}
}
int main()
{
srand( time( nullptr ) );
for( int i = 0; i < 54; ++i )
{
GCardSrc[ i ] = i;
}
const int PlayerCnt = 4;
const int PlayerCardCnt = 5;
int DestCard[ PlayerCardCnt * PlayerCnt ] = {};
for( int i = 0; i < 5; ++i )
{
ShuffleCard( DestCard, PlayerCardCnt, PlayerCnt );
for( int i = 0; i < PlayerCnt * PlayerCardCnt; ++i )
{
printf( "player:%d card[%d]=%d\n", i / PlayerCardCnt, i % PlayerCardCnt, DestCard[ i ] );
}
printf( "-----------------------\n" );
}
return 0;
}
C++下棋牌游戏高性能洗牌算法
最新推荐文章于 2024-02-25 20:40:16 发布