https://leetcode.com/problems/shuffle-an-array


Runtime: 244 ms, faster than 12.68% of Go online submissions for Shuffle an Array.
Memory Usage: 9.4 MB, less than 34.29% of Go online submissions for Shuffle an Array.


```golang
package main

import (
 "fmt"
 "math/rand"
 "time"
)

type Solution struct {
 origin []int
}


func Constructor(nums []int) Solution {
 //7:14
 return Solution{origin: nums}
 //7:19
}


/** Resets the array to its original configuration and return it. */
func (this *Solution) Reset() []int {
 return this.origin
}

/** Returns a random shuffling of the array. */
func (this *Solution) Shuffle() []int {
    a := make([]int, len(this.origin))
    copy(a, this.origin)
 rand.Seed(time.Now().UnixNano())
 for i := len(a) - 1; i > 0; i-- { // Fisher–Yates shuffle
  j := rand.Intn(i + 1)
  a[i], a[j] = a[j], a[i]
 }
 return a
}
```
