Skip to content

Commit f872398

Browse files
added shuffled array
1 parent 3d33b36 commit f872398

File tree

1 file changed

+71
-0
lines changed

1 file changed

+71
-0
lines changed

other/shuffled_array.py

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
# To create a shuffled array. Generate a pseudo random number
2+
# Swap that number with any other element in the list run this swapping len(Array)
3+
# times to get desired shuffled array
4+
5+
# To Understand more of random number generation
6+
# follow https://en.wikipedia.org/wiki/Lagged_Fibonacci_generator
7+
8+
# import doctest
9+
import time
10+
11+
12+
class Solution:
13+
14+
"""
15+
>>> Solution().__init__(array=[1,2,3])
16+
Traceback (most recent call last):
17+
....
18+
TypeError: __init__() missing 1 required positional argument: 'array'
19+
"""
20+
21+
def __init__(self, array: list) -> None:
22+
self.arr = array
23+
self.seed = int(str(time.time())[-1:-5:-1])
24+
25+
# generating a 4 digit number randomly
26+
# by taking the last four numbers of the system generated time
27+
# pseudo random number generator
28+
def prng(self, num: int) -> int:
29+
"""
30+
>>> Solution([56]).prng(1)
31+
0
32+
"""
33+
if num == 1:
34+
return 0
35+
self.seed *= self.seed
36+
any = str(self.seed)
37+
if any != "0":
38+
self.seed = int(any[-1:-5:-1])
39+
else:
40+
any = any[:] + str(len(self.arr) // 2)
41+
if int(any[-1]) < num:
42+
return int(any[-1])
43+
return self.prng(num)
44+
45+
def reset(self) -> list:
46+
# it will return the original given array
47+
"""
48+
>>> Solution([2,3,4,56]).reset()
49+
[2, 3, 4, 56]
50+
"""
51+
return self.arr
52+
53+
def shuffle(self) -> list:
54+
# generated a pseudo number for each traversal
55+
# and swapped the traversing value with that number
56+
"""
57+
>>> Solution([2]).shuffle()
58+
[2]
59+
"""
60+
temp = self.arr.copy()
61+
for i in range(len(self.arr)):
62+
a = self.prng(len(self.arr))
63+
temp[a], temp[i] = temp[i], temp[a]
64+
return temp
65+
66+
67+
solclass = Solution([18, 2, 3, 4, 5, 7, 8, 10, 21])
68+
shuffled_arr = solclass.shuffle()
69+
print(shuffled_arr)
70+
71+
# doctest.testmod()

0 commit comments

Comments
 (0)