Practical Random Examples
Real-World Applications of Random Number Generation
Simulating Dice Roll
package main
import (
"fmt"
"math/rand"
"time"
)
func rollDice() int {
rand.Seed(time.Now().UnixNano())
return rand.Intn(6) + 1
}
func main() {
fmt.Println("Dice Roll Result:", rollDice())
}
Random Selection from a List
func selectRandomItem(items []string) string {
rand.Seed(time.Now().UnixNano())
return items[rand.Intn(len(items))]
}
func main() {
fruits := []string{"Apple", "Banana", "Cherry", "Date"}
fmt.Println("Random Fruit:", selectRandomItem(fruits))
}
Random Number Generation Workflow
graph TD
A[Start] --> B[Seed Random Generator]
B --> C{Select Generation Method}
C --> |Integer| D[rand.Intn()]
C --> |Float| E[rand.Float64()]
D --> F[Generate Number]
E --> F
F --> G[Use Random Number]
G --> H[End]
Monte Carlo Simulation Example
func monteCarloPI(iterations int) float64 {
rand.Seed(time.Now().UnixNano())
insideCircle := 0
for i := 0; i < iterations; i++ {
x := rand.Float64()
y := rand.Float64()
if x*x + y*y <= 1 {
insideCircle++
}
}
return 4 * float64(insideCircle) / float64(iterations)
}
func main() {
fmt.Printf("Estimated PI: %.4f\n", monteCarloPI(100000))
}
Random Shuffling of Slice
func shuffleSlice(data []int) []int {
rand.Seed(time.Now().UnixNano())
rand.Shuffle(len(data), func(i, j int) {
data[i], data[j] = data[j], data[i]
})
return data
}
func main() {
numbers := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
fmt.Println("Shuffled Slice:", shuffleSlice(numbers))
}
Random Generation Use Cases
Scenario |
Random Method |
Example Application |
Game Development |
rand.Intn() |
Generating enemy positions |
Scientific Simulation |
rand.Float64() |
Monte Carlo methods |
Testing |
rand.Seed() |
Creating diverse test scenarios |
Advanced Random Techniques for LabEx Learners
- Use cryptographically secure random generation when needed
- Understand seed importance
- Choose appropriate random generation method
- Seed only once in your program
- Use appropriate random generation method
- Consider performance impact of repeated seeding
Error Handling in Random Generation
func safeRandomGeneration(max int) (int, error) {
if max <= 0 {
return 0, fmt.Errorf("invalid range")
}
return rand.Intn(max), nil
}
Conclusion
Random number generation is a powerful technique with diverse applications across programming domains. LabEx learners can leverage these methods to create more dynamic and unpredictable software solutions.