39 lines
1.4 KiB
Markdown
39 lines
1.4 KiB
Markdown
**A. Simple Shuffle (Most Common & Effective for Simple Games):**
|
|
- This is the easiest and most effective approach for most cases. It involves re-generating the sequence of function calls.
|
|
- **How it works:** It uses the `rand.Shuffle(n)` function to randomly reorder the generated sequence of function calls. `n` is the number of functions to shuffle.
|
|
- **Code Example:**
|
|
|
|
```go
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"math/rand"
|
|
"time"
|
|
)
|
|
|
|
func main() {
|
|
// Example: Create a list of 5 functions.
|
|
functions := []func(){
|
|
func1(1) { /* Function 1 logic */ },
|
|
func2(2) { /* Function 2 logic */ },
|
|
func3(3) { /* Function 3 logic */ },
|
|
func4(4) { /* Function 4 logic */ },
|
|
func5(5) { /* Function 5 logic */ },
|
|
}
|
|
|
|
// Seed the random number generator for more variability. Important!
|
|
rand.Seed(time.Now().UnixNano()) //Use a unique seed value
|
|
|
|
// Shuffle the functions.
|
|
for i := 0; i < len(functions); i++ {
|
|
indices := rand.Perm(len(functions)) //Generate random indices
|
|
functions[indices]() //Call the function at the randomly chosen index
|
|
}
|
|
|
|
fmt.Println("Randomized Functions:")
|
|
for _, func := range functions {
|
|
fmt.Println(func())
|
|
}
|
|
}
|
|
```
|