about summary refs log tree commit diff
path: root/scratch/facebook/hard/fisher-yates.py
diff options
context:
space:
mode:
authorWilliam Carroll <wpcarro@gmail.com>2020-11-17T22·28+0000
committerWilliam Carroll <wpcarro@gmail.com>2020-11-17T22·28+0000
commit751b5327a92f4d53db6253e59c475e4e96cabcb6 (patch)
tree523d6efc2f8f7e52b665738224129bc76be8dd13 /scratch/facebook/hard/fisher-yates.py
parent572fb0fe5f8201376740c84a316407b75e96b1c9 (diff)
Solve algorithms dealing with randomness
Tonight I learned that random sample where each element in the sampling corpus
has an equal likelihood of being chosen is a brand of algorithms known as
"reservoir sampling".

- Implement random.shuffle(..)
- Implement random.choice(..)

Surprisingly, candidates are expected to encounter problems like this during
interviews.
Diffstat (limited to 'scratch/facebook/hard/fisher-yates.py')
-rw-r--r--scratch/facebook/hard/fisher-yates.py7
1 files changed, 7 insertions, 0 deletions
diff --git a/scratch/facebook/hard/fisher-yates.py b/scratch/facebook/hard/fisher-yates.py
new file mode 100644
index 000000000000..200d1613ddcb
--- /dev/null
+++ b/scratch/facebook/hard/fisher-yates.py
@@ -0,0 +1,7 @@
+import random
+
+def shuffle(xs):
+    n = len(xs)
+    for i in range(n):
+        j = random.randint(i, n - 1)
+        xs[i], xs[j] = xs[j], xs[i]