|
|

楼主 |
发表于 2006-5-11 16:56:00
|
显示全部楼层
Re:求教一个扑克牌洗牌的算法
谢谢楼上的朋友,以下是根据楼上的朋友的方法我自己综合了一下写的
void poker::random_init(void)
{
int rfd = open("/dev/random",O_RDONLY);
if (rfd = 0) {
rfd = open("/dev/ramdon",O_RDONLY);
}
m_iCount = read(rfd,m_rseed,1*1024);
close(rfd);
}
int poker::get_random()
{
if (m_iCount < 2) random_init();
srand(m_rseed[m_iCount]+m_rseed[m_iCount-1] << 8);
m_iCount -= 2;
return (random()%52);
}
void poker::shuffle()
{
int i,j,tmp;
random_shuffle(m_Card,m_Card+52);
for (i=1;i<=52;i++)
{
j = poker::get_random();
tmp = m_Card;
m_Card = m_Card[j];
m_Card[j] = tmp;
}
random_shuffle(m_Card, m_Card+52);
m_iCursor = 0;
}
shuffle是洗牌函数,我用一52个整数的数组表示牌号,但是我在linux下编译的时候报random_shuffle函数未定义,不知道这个函数是否能在linux下使用还是我包含头文件错了
请指教一下 |
|