Programmazione in Golang: l'uso della libreria math e i metodi e le funzioni Rand, Seed, Time, Rand.Perm, Crypto rand
Programmazione in Golang: l'uso della libreria math e i metodi e le funzioni Rand, Seed, Time, Rand.Perm, Crypto rand
Lezione universitaria su Golang - esame "Programmazione"
Questo programma genera 5 numeri pseudo-casuali. Utilizza un valore seed predefinito (che inizializza il generatore) di 1.
Quindi: il programma genera gli stessi numeri ogni volta. Prova a eseguirlo più volte: ha sempre lo stesso risultato.
Int: questo metodo restituisce un int positivo (non negativo). Non sono possibili valori frazionari o negativi.
Suggerimento: per modificare la serie iniziale di valori restituiti da rand.Int, utilizzare il metodo Seed.
Golang program that uses rand.Int
package main
import (
"fmt"
"math/rand"
)
func main() {
// Loop five times.
for i := 0; i < 5; i++ {
// Get random positive integer.
value := rand.Int()
fmt.Println(value)
}
}
Output
5577006791947779410
8674665223082153551
6129484611666145821
4037200794235010051
3916589616287113937
Seed. Questo metodo inizializza la fonte casuale. Quando utilizziamo un seed in base all'ora corrente, l'esecuzione di ciascun programma inizierà con una sequenza casuale diversa.
Qui: Utilizziamo i nanosecondi attuali del tempo. Abbiamo lanciato questo su un int64 per eseguire il seeding del generatore di numeri.
Time
Nota: se si esegue questo programma più volte, ogni esecuzione stamperà un numero casuale diverso.
Golang program that uses Seed
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
// Call Seed, using current nanoseconds.
rand.Seed(int64(time.Now().Nanosecond()))
// Random int will be different each program execution.
value := rand.Int()
fmt.Println(value)
}
Output
6912970929678809162
Rand.Perm. Questa funzione è utile Genera sezioni di Ints con valori compresi tra 0 e l'indice massimo della sezione. Ogni valore appare solo una volta. Quindi crea permutazioni di Ints.
Qui: chiamiamo rand.Perm con un argomento di 5. Quindi i numeri 0, 1, 2, 3 e 4 sono disposti casualmente in sezioni di 5 elementi.
Importante: Perm utilizza l'origine casuale predefinita. Quindi dovremmo usare Seed per evitare lo stesso output ad ogni esecuzione del programma.
Golang program that uses rand.Perm
package main
import (
"fmt"
"math/rand"
)
func main() {
for i := 0; i < 5; i++ {
// Use rand.Perm to generate a random array of numbers.
numbers := rand.Perm(5)
fmt.Println(numbers)
}
}
Output
[0 4 2 3 1]
[4 1 2 0 3]
[2 3 0 4 1]
[0 4 2 1 3]
[1 0 4 2 3]
Crypto rand. I numeri casuali sono disponibili in vari livelli di casualità. Per i migliori numeri casuali integrati in Go, dovremmo usare crypto rand. Dobbiamo usare il pacchetto "math / big".
Programma: Chiamiamo il metodo rand.Int in "crypto / rand" 20 volte. Otteniamo valori compresi tra 0 e 99 inclusi (non ne otteniamo mai 100).
Golang program that uses crypto rand
package main
import (
"crypto/rand"
"math/big"
"fmt"
)
func main() {
// Generate 20 random numbers with exclusive max of 100.
// ... So max value returned is 99.
// All values returned are 0 or greater as well.
for i := 0; i < 20; i++ {
result, _ := rand.Int(rand.Reader, big.NewInt(100))
fmt.Println(result)
}
}
Output
54
77
56
21
56
81
55
16
57
88
95
58
12
74
23
35
72
29
25
68
fonte: https://www.dotnetperls.com/rand-go
Paolo Latella
Lezione universitaria su Golang - esame "Programmazione"
Questo programma genera 5 numeri pseudo-casuali. Utilizza un valore seed predefinito (che inizializza il generatore) di 1.
Quindi: il programma genera gli stessi numeri ogni volta. Prova a eseguirlo più volte: ha sempre lo stesso risultato.
Int: questo metodo restituisce un int positivo (non negativo). Non sono possibili valori frazionari o negativi.
Suggerimento: per modificare la serie iniziale di valori restituiti da rand.Int, utilizzare il metodo Seed.
Golang program that uses rand.Int
package main
import (
"fmt"
"math/rand"
)
func main() {
// Loop five times.
for i := 0; i < 5; i++ {
// Get random positive integer.
value := rand.Int()
fmt.Println(value)
}
}
Output
5577006791947779410
8674665223082153551
6129484611666145821
4037200794235010051
3916589616287113937
Seed. Questo metodo inizializza la fonte casuale. Quando utilizziamo un seed in base all'ora corrente, l'esecuzione di ciascun programma inizierà con una sequenza casuale diversa.
Qui: Utilizziamo i nanosecondi attuali del tempo. Abbiamo lanciato questo su un int64 per eseguire il seeding del generatore di numeri.
Time
Nota: se si esegue questo programma più volte, ogni esecuzione stamperà un numero casuale diverso.
Golang program that uses Seed
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
// Call Seed, using current nanoseconds.
rand.Seed(int64(time.Now().Nanosecond()))
// Random int will be different each program execution.
value := rand.Int()
fmt.Println(value)
}
Output
6912970929678809162
Rand.Perm. Questa funzione è utile Genera sezioni di Ints con valori compresi tra 0 e l'indice massimo della sezione. Ogni valore appare solo una volta. Quindi crea permutazioni di Ints.
Qui: chiamiamo rand.Perm con un argomento di 5. Quindi i numeri 0, 1, 2, 3 e 4 sono disposti casualmente in sezioni di 5 elementi.
Importante: Perm utilizza l'origine casuale predefinita. Quindi dovremmo usare Seed per evitare lo stesso output ad ogni esecuzione del programma.
Golang program that uses rand.Perm
package main
import (
"fmt"
"math/rand"
)
func main() {
for i := 0; i < 5; i++ {
// Use rand.Perm to generate a random array of numbers.
numbers := rand.Perm(5)
fmt.Println(numbers)
}
}
Output
[0 4 2 3 1]
[4 1 2 0 3]
[2 3 0 4 1]
[0 4 2 1 3]
[1 0 4 2 3]
Crypto rand. I numeri casuali sono disponibili in vari livelli di casualità. Per i migliori numeri casuali integrati in Go, dovremmo usare crypto rand. Dobbiamo usare il pacchetto "math / big".
Programma: Chiamiamo il metodo rand.Int in "crypto / rand" 20 volte. Otteniamo valori compresi tra 0 e 99 inclusi (non ne otteniamo mai 100).
Golang program that uses crypto rand
package main
import (
"crypto/rand"
"math/big"
"fmt"
)
func main() {
// Generate 20 random numbers with exclusive max of 100.
// ... So max value returned is 99.
// All values returned are 0 or greater as well.
for i := 0; i < 20; i++ {
result, _ := rand.Int(rand.Reader, big.NewInt(100))
fmt.Println(result)
}
}
Output
54
77
56
21
56
81
55
16
57
88
95
58
12
74
23
35
72
29
25
68
fonte: https://www.dotnetperls.com/rand-go
Paolo Latella
Commenti
Posta un commento