Το πακέτο math/rand παρέχει υποστήριξη για τη δημιουργία ψευδοτυχαίων αριθμών.
Να πώς μπορείς να δημιουργήσεις έναν τυχαίο ακέραιο μεταξύ 0 και 99:
n := rand.Intn(100) // n is a random int, 0 <= n < 100
Η συνάρτηση rand.Float64 επιστρέφει έναν τυχαίο αριθμό κινητής υποδιαστολής μεταξύ 0.0 και 1.0:
f := rand.Float64() // f is a random float64, 0.0 <= f < 1.0
Υπάρχει επίσης υποστήριξη για το ανακάτεμα ενός slice (ή άλλων δομών δεδομένων):
x := []string{"a", "b", "c", "d", "e"}
// shuffling the slice put its elements into a random order
rand.Shuffle(len(x), func(i, j int) {
x[i], x[j] = x[j], x[i]
})
Οι ακολουθίες αριθμών που παράγει το πακέτο math/rand δεν είναι πραγματικά τυχαίες.
Δεδομένης μιας συγκεκριμένης τιμής "seed", τα αποτελέσματα είναι απολύτως ντετερμινιστικά.
Στη Go 1.20+ το seed επιλέγεται αυτόματα τυχαία, οπότε θα βλέπεις μια διαφορετική ακολουθία τυχαίων αριθμών κάθε φορά που εκτελείς το πρόγραμμά σου.
Σε προηγούμενες εκδόσεις της Go, το seed ήταν 1 από προεπιλογή.
Έτσι, για να έχεις διαφορετικές ακολουθίες σε κάθε εκτέλεση του προγράμματος, έπρεπε να δώσεις χειροκίνητα ένα seed στη γεννήτρια τυχαίων αριθμών, π.χ. με την τρέχουσα ώρα, πριν πάρεις οποιονδήποτε τυχαίο αριθμό.
rand.Seed(time.Now().UnixNano())
Η Elaine δουλεύει ένα νέο παιδικό παιχνίδι με ζώα και μαγικά ραβδιά. Ήρθε η ώρα να γράψεις κώδικα για συναρτήσεις που ρίχνουν ένα ζάρι, παράγουν τυχαία ενέργεια ραβδιού και ανακατεύουν ένα slice.
Υλοποίησε μια συνάρτηση RollADie.
Αυτό θα είναι το παραδοσιακό ζάρι με είκοσι πλευρές και αριθμούς από το 1 έως το 20.
d := RollADie() // d will be assigned a random int, 1 <= d <= 20
Υλοποίησε μια συνάρτηση GenerateWandEnergy.
Η ενέργεια του ραβδιού πρέπει να είναι ένας τυχαίος αριθμός κινητής υποδιαστολής μεγαλύτερος ή ίσος με 0.0 και μικρότερος από 12.0.
f := GenerateWandEnergy() // f will be assigned a random float64, 0.0 <= f < 12.0
Το παιχνίδι περιλαμβάνει οκτώ διαφορετικά ζώα:
Γράψε μια συνάρτηση ShuffleAnimals που επιστρέφει ένα slice με τα οκτώ ζώα σε τυχαία σειρά.
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Go με 34 έννοιες165 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.