标题:扑克牌洗牌问题
取消只看楼主
lxs5216
Rank: 1
等 级:新手上路
帖 子:144
专家分:0
注 册:2006-2-3
 问题点数:0 回复次数:5 
扑克牌洗牌问题
求教扑克牌洗牌问题,怎么才能把一付扑克牌洗散??
搜索更多相关主题的帖子: 扑克牌 洗牌 
2006-07-01 21:29
lxs5216
Rank: 1
等 级:新手上路
帖 子:144
专家分:0
注 册:2006-2-3
得分:0 
以下是引用–★–在2006-7-1 21:33:16的发言:
早些时候,版主不是回答过您(指楼主)了吗?

哦,那样解决问题了吗??

你把我的问题引到别处去了呀

2006-07-01 21:35
lxs5216
Rank: 1
等 级:新手上路
帖 子:144
专家分:0
注 册:2006-2-3
得分:0 
以下是引用dqh3000在2006-7-1 21:31:53的发言:

for循环所有的扑克,rand一个数,把当前循环的数与rand出的数对调,如果要更杂乱只需要多循环几次即可

rand会产生一些重复的数,不是最佳的解决办法,因为一付牌只有一张红桃A

2006-07-01 21:36
lxs5216
Rank: 1
等 级:新手上路
帖 子:144
专家分:0
注 册:2006-2-3
得分:0 
以下是引用dqh3000在2006-7-1 21:38:07的发言:

随机就一定要用rand,你在说什么啊,一付扑克自然只有一张红桃A,我们没有改变红桃A,只是改变红桃A在数组中的位置而已,这样就算相同,又如何

我知道你的意思是用指针来指,然后用rand来控制指针,但是这样似乎不对啊,因为rand 可能会生成两次一样的,所以指针可能会有两次指向同一张,这样不就没有达到效果了??

2006-07-01 21:41
lxs5216
Rank: 1
等 级:新手上路
帖 子:144
专家分:0
注 册:2006-2-3
得分:0 
以下是引用–★–在2006-7-1 21:40:10的发言:
你这属于一帖多发,懂吗?
你刚刚的言论对feng1256
也是不恭的。他把你引错
了吗?洗牌发牌可不就是
个伪随机数发生器问题嘛!

不好意思,言语有点过激了,但是通过交流我还是没有头绪啊!
因为你们说过的,我无法付于实践,在实践过程中出了错啊!

2006-07-01 21:46
lxs5216
Rank: 1
等 级:新手上路
帖 子:144
专家分:0
注 册:2006-2-3
得分:0 
以下是引用神vLinux飘飘在2006-7-1 22:53:45的发言:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

#define TIMES 1000
#define CARD_NUMBER 54

int main(void){
int card[CARD_NUMBER],i,a,b,temp;
time_t t;
srand( (unsigned)time(&t) );
for(i=0;i<CARD_NUMBER;card[i]=i++);
for(i=0;i<TIMES;i++){
temp = card[a=rand()%CARD_NUMBER];
card[a] = card[b=rand()%CARD_NUMBER];
card[b] = temp;
}
for(i=0;i<CARD_NUMBER;i++)
printf("card[%d]=%d\t",i,card[i]);
printf("\n");
return 0;
}
晕,理论上没错,但是实践中却出了错啊,希望你来了看到贴后自己运行一下,我不知道是我的机子问题还是怎么,card的值居然是负数,而且全是一样的!!!!
2006-07-01 23:26



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-76109-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.090780 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved