关于牌类游戏洗牌算法一问:怎样才算把牌洗均匀了呢?

icessl 2001-12-24 07:42:13
拿桥牌为例,共有 52 张牌,发牌前总要洗牌,洗牌用的随机函数是伪随机函数。
那么,怎样洗牌能洗均匀?怎样判断(或统计地看)一副牌(或若干副牌)是否洗
均匀了呢?
...全文
370 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
icessl 2002-01-01
  • 打赏
  • 举报
回复
谢谢。
icessl 2001-12-26
  • 打赏
  • 举报
回复
to Arter(阿蒂尔):
洗牌我会洗。我的问题是怎样才算洗匀?
比如你说的“这样多次”,那多少次最合适?我们知道,次数太少,显然没有洗匀,次数太多,又浪费时间。到底要多少次?如何计算它的“均匀度”?
Arter 2001-12-26
  • 打赏
  • 举报
回复
一般说:3-5次!(Best 3)
(1,2,3,...,52)-->(27,1,28,2,29,3,...,52,26)
axial 2001-12-26
  • 打赏
  • 举报
回复
先搞清楚什么叫均匀!!!
洗牌的目的是使下一张牌具有不可预测性,且每一张没有抽出来的牌,在下一张出现的的可能性相等。
所以如果不记牌的话,那么对于下一次洗不洗就无所谓。
比如前面一拨人打完后,不洗,直接叠上。
那么对下一拨人而言,这就可以算是均匀的。
wagnerwash 2001-12-26
  • 打赏
  • 举报
回复
口合口合!还真有人用手洗牌的方式设计洗牌算法呀?
请参考STL中的random_shuffle函数。
统计的判断洗牌是否均匀就是判断任意N张牌的各种位置排列组合的概率是否与理论值相符?
最简单的情况:N=1时。就是判断每张牌出现在每个位置的概率是否相等?
Arter 2001-12-24
  • 打赏
  • 举报
回复
每次都将奇数号的按序抽出(即从上往下第1,3,5,7,...,51)放在下面变成
(1,2,3,....52)-->(2,4,6,8,...,52,1,3,5,...,51)
这样多次!
再循环移位(切牌)即可!
one_add_one 2001-12-24
  • 打赏
  • 举报
回复
随机交换

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧