Διαδρομές
/
Go
Go
/
Ύλη
/
Τυχαιότητα
Τυ

Τυχαιότητα σε Go

2 ασκήσεις

Σχετικά με την έννοια Τυχαιότητα

Το πακέτο math/rand παρέχει υποστήριξη για τη δημιουργία ψευδοτυχαίων αριθμών.

Να πώς δημιουργείς έναν τυχαίο ακέραιο μεταξύ 0 και 99:

import "math/rand"

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 δεν είναι πραγματικά τυχαίες. Δεδομένης μιας συγκεκριμένης τιμής "σπόρου", τα αποτελέσματα είναι εντελώς ντετερμινιστικά.

Στη Go 1.20+ ο σπόρος επιλέγεται αυτόματα τυχαία, οπότε θα βλέπεις διαφορετική ακολουθία τυχαίων αριθμών κάθε φορά που τρέχεις το πρόγραμμά σου.

Σε προηγούμενες εκδόσεις της Go, ο σπόρος ήταν 1 από προεπιλογή. Έτσι, για να έχεις διαφορετικές ακολουθίες σε κάθε εκτέλεση του προγράμματος, έπρεπε να θέτεις χειροκίνητα τον σπόρο της γεννήτριας τυχαίων αριθμών, π.χ. με την τρέχουσα ώρα, πριν πάρεις οποιονδήποτε τυχαίο αριθμό.

rand.Seed(time.Now().UnixNano())
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα

Μάθε την έννοια Τυχαιότητα

Η εξάσκηση είναι κλειδωμένη

Ξεκλείδωσε 2 ακόμη ασκήσεις για να εξασκηθείς στην έννοια Τυχαιότητα