Java Solution.
Intuition\n Describe your first thoughts on how to solve this problem. \n\n# Approach\n Describe your approach to solving the problem. \n\n# Complexity\n- Time 
# Intuition\n<!-- Describe your first thoughts on how to solve this problem. -->\n\n# Approach\n<!-- Describe your approach to solving the problem. -->\n\n# Complexity\n- Time complexity:\n<!-- Add your time complexity here, e.g. $$O(n)$$ -->\n\n- Space complexity:\n<!-- Add your space complexity here, e.g. $$O(n)$$ -->\n\n# Code\n```\nclass Solution {\n    HashMap<Integer, Integer> map;\n    int row;\n    int col;\n    Random ran;\n    int total;\n\n    public Solution(int m, int n) {\n        map = new HashMap<>();\n        ran = new Random();\n        row = m;\n        col = n;\n        total = row * col;    \n    }\n    public int[] flip() {\n        int r = ran.nextInt(total);\n        int x = map.getOrDefault(r,r);\n        total--;\n        map.put(r, map.getOrDefault(total, total));\n        return new int[] {x / col, x % col};\n    }\n\n    \n    public void reset() {\n    map.clear();\n    total = row * col;        \n    }\n}\n\n```
['Java']