由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - how to shuffle a deck of cards?
相关主题
Randomly shuffle decks of cards【JOBS】NCG CAD Engineer
Anyone knowing how to shuffle a deck of cards in Java?amazon intern 三面
java: use vector to shuffle a deck of Card 问题问道F家的题
问道题Apple 面经
Apple 电面Jane street 电话面试
再问Amazon的card设计一道brain teaser的题
C++ template 指定T是某类的子类Parking lot 和 Deck of cards是用了哪种design pattern?
Job Opening : Senior CAD Engineer三个Marketing的positions
相关话题的讨论汇总
话题: shuffle话题: deck话题: cards话题: decks话题: random
进入JobHunting版参与讨论
1 (共1页)
c*******r
发帖数: 309
1
How to randomly shuffle a deck of card? I saw this question several time,
but never know the answer
B******5
发帖数: 4676
2
Knuth的方法
e*********l
发帖数: 136
3
wiki上有shuffle算法
Fisher Yates
http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle
d********t
发帖数: 9628
4

只有52张牌的话直接产生随机数不是更方便吗?

【在 B******5 的大作中提到】
: Knuth的方法
B******5
发帖数: 4676
5
how?你来说说看

【在 d********t 的大作中提到】
:
: 只有52张牌的话直接产生随机数不是更方便吗?

d********t
发帖数: 9628
6

assign a random no. to each of the 52 cards,
sort them with respect to the random numbers

【在 B******5 的大作中提到】
: how?你来说说看
h**6
发帖数: 4160
7
那么,第一步怎么给52张牌赋随机值呢?
d********t
发帖数: 9628
8
我非CS野路子C++用户回答不了

【在 h**6 的大作中提到】
: 那么,第一步怎么给52张牌赋随机值呢?
h**6
发帖数: 4160
9
生成52个随机数很容易,难点在于生成范围为1-52且不重复的随机数。
前面有人贴的链接可以参考一下。
B******5
发帖数: 4676
10
that is my point, too

【在 h**6 的大作中提到】
: 生成52个随机数很容易,难点在于生成范围为1-52且不重复的随机数。
: 前面有人贴的链接可以参考一下。

s********y
发帖数: 161
11
本人第一轮电面就有这题,很常见的。先问你个扑克牌怎么design,再shuffle下。
S*******0
发帖数: 198
12
一开始产生 n1 = rand(0,52); //0-51
swap decks[0], decks[n1]
产生 n2 = rand(0,51); //0-50
swap deck[1], decks[n2 + 1]
n3 = rand(0,50); //0-49
swap deck[2], decks[n2 + 2]
and so on.

【在 B******5 的大作中提到】
: how?你来说说看
c*******r
发帖数: 309
13
To shuffle an array a of n elements (indices 0..n-1):
for i from n − 1 downto 1 do
j ← random integer with 0 ≤ j ≤ i
exchange a[j] and a[i]
B******5
发帖数: 4676
14
这难道不是Knuth shuffle?

【在 S*******0 的大作中提到】
: 一开始产生 n1 = rand(0,52); //0-51
: swap decks[0], decks[n1]
: 产生 n2 = rand(0,51); //0-50
: swap deck[1], decks[n2 + 1]
: n3 = rand(0,50); //0-49
: swap deck[2], decks[n2 + 2]
: and so on.

1 (共1页)
进入JobHunting版参与讨论
相关主题
三个Marketing的positionsApple 电面
最近流行的一个测验题再问Amazon的card设计
面试需要做45分钟presentationC++ template 指定T是某类的子类
java: use vector to shuffle a deck of Card 问题 (转载)Job Opening : Senior CAD Engineer
Randomly shuffle decks of cards【JOBS】NCG CAD Engineer
Anyone knowing how to shuffle a deck of cards in Java?amazon intern 三面
java: use vector to shuffle a deck of Card 问题问道F家的题
问道题Apple 面经
相关话题的讨论汇总
话题: shuffle话题: deck话题: cards话题: decks话题: random