From 2782f0d99f601325034f5df5e37a353c97115224 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?duru=E0=AD=A8=E0=A7=8E?= Date: Fri, 13 Mar 2026 09:37:58 +0300 Subject: [PATCH 1/5] Create weighted_duru_kiran.py --- Week02/weighted_duru_kiran.py | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 Week02/weighted_duru_kiran.py diff --git a/Week02/weighted_duru_kiran.py b/Week02/weighted_duru_kiran.py new file mode 100644 index 00000000..26998eab --- /dev/null +++ b/Week02/weighted_duru_kiran.py @@ -0,0 +1,9 @@ +import random +def weighted_srs(data, n, weights, with_replacement): + if with_replacement: return random.choices(data, weights=weights, k=n) + selected, w = [], list(weights) + for _ in range(n): + index = random.choices(range(len(data)), weights=w)[0] + selected.append(data[index]) + w[index] = 0 + return selected From e14f324c4888a42dfefc3e158472db471b303133 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?duru=E0=AD=A8=E0=A7=8E?= Date: Fri, 13 Mar 2026 09:41:00 +0300 Subject: [PATCH 2/5] Update weighted_duru_kiran.py --- Week02/weighted_duru_kiran.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Week02/weighted_duru_kiran.py b/Week02/weighted_duru_kiran.py index 26998eab..d2e70e43 100644 --- a/Week02/weighted_duru_kiran.py +++ b/Week02/weighted_duru_kiran.py @@ -1,5 +1,5 @@ import random -def weighted_srs(data, n, weights, with_replacement): +def weighted_srs(data, n, weights, *, with_replacement=False): if with_replacement: return random.choices(data, weights=weights, k=n) selected, w = [], list(weights) for _ in range(n): From 70256d873825074c241fda7c77159714dcb77dac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?duru=E0=AD=A8=E0=A7=8E?= Date: Fri, 13 Mar 2026 09:48:01 +0300 Subject: [PATCH 3/5] Update weighted_duru_kiran.py --- Week02/weighted_duru_kiran.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Week02/weighted_duru_kiran.py b/Week02/weighted_duru_kiran.py index d2e70e43..62aa421e 100644 --- a/Week02/weighted_duru_kiran.py +++ b/Week02/weighted_duru_kiran.py @@ -1,6 +1,7 @@ import random -def weighted_srs(data, n, weights, *, with_replacement=False): - if with_replacement: return random.choices(data, weights=weights, k=n) +def weighted_srs(data, n, weights, with_replacement=False): + if with_replacement: + return random.choices(data, weights=weights, k=n) selected, w = [], list(weights) for _ in range(n): index = random.choices(range(len(data)), weights=w)[0] From d9a228ebeb112e27674f31d35a30bc13e8213d42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?duru=E0=AD=A8=E0=A7=8E?= Date: Fri, 13 Mar 2026 09:52:39 +0300 Subject: [PATCH 4/5] Update weighted_duru_kiran.py --- Week02/weighted_duru_kiran.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Week02/weighted_duru_kiran.py b/Week02/weighted_duru_kiran.py index 62aa421e..f2a59bfe 100644 --- a/Week02/weighted_duru_kiran.py +++ b/Week02/weighted_duru_kiran.py @@ -2,9 +2,9 @@ def weighted_srs(data, n, weights, with_replacement=False): if with_replacement: return random.choices(data, weights=weights, k=n) - selected, w = [], list(weights) + res, d, w = [], list(data), list(weights) for _ in range(n): - index = random.choices(range(len(data)), weights=w)[0] - selected.append(data[index]) - w[index] = 0 - return selected + index = random.choices(range(len(d)), weights=w, k=1)[0] + res.append(d.pop(index)) + w.pop(index) + return res From 3d8c4544d2f5bc0a941eb2923e8ca4e2452eb66a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?duru=E0=AD=A8=E0=A7=8E?= Date: Fri, 13 Mar 2026 09:59:14 +0300 Subject: [PATCH 5/5] Delete Week02/weighted_duru_kiran.py --- Week02/weighted_duru_kiran.py | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 Week02/weighted_duru_kiran.py diff --git a/Week02/weighted_duru_kiran.py b/Week02/weighted_duru_kiran.py deleted file mode 100644 index f2a59bfe..00000000 --- a/Week02/weighted_duru_kiran.py +++ /dev/null @@ -1,10 +0,0 @@ -import random -def weighted_srs(data, n, weights, with_replacement=False): - if with_replacement: - return random.choices(data, weights=weights, k=n) - res, d, w = [], list(data), list(weights) - for _ in range(n): - index = random.choices(range(len(d)), weights=w, k=1)[0] - res.append(d.pop(index)) - w.pop(index) - return res