Maison > développement back-end > Golang > le corps du texte

Interprétation de la documentation en langage Go : Explication détaillée de la fonction crypto/rand.Int

WBOY
Libérer: 2023-11-03 08:03:17
original
1517 Les gens l'ont consulté

Interprétation de la documentation en langage Go : Explication détaillée de la fonction crypto/rand.Int

Le langage Go est un langage de programmation moderne En raison de son efficacité et de ses caractéristiques faciles à apprendre, de plus en plus de développeurs commencent à utiliser ce langage dans des projets. Dans le langage Go, l'utilisation de nombres aléatoires est une exigence très courante, et la fonction Int dans crypto/rand, le package générateur de nombres aléatoires crypté fourni avec le langage Go, fournit un moyen de générer des entiers aléatoires.

Cet article expliquera la fonction crypto/rand.Int en détail et fournira des exemples de code spécifiques.

1. Fonction crypto/rand.Int

La fonction crypto/rand.Int est une fonction de génération d'entiers aléatoires fournie dans le package crypto/rand du langage Go. Cette fonction a deux paramètres : un paramètre d'entrée rand, qui représente la source de génération de nombres aléatoires ; un paramètre de sortie limbs, qui représente la longueur totale de l'entier aléatoire de sortie.

Le prototype de cette fonction est le suivant :

func Int(rand io.Reader, max *big.Int) (n *big.Int, err error)
Copier après la connexion

Parmi eux, le paramètre rand est la source à partir de laquelle des nombres aléatoires sont générés, qui peuvent généralement être obtenus en appelant la fonction Reader dans le package crypto/rand. Le paramètre max représente la longueur totale de l'entier aléatoire de sortie et la valeur par défaut est 1.

Le type de retour de cette fonction est *big.Int, car la bibliothèque de grands nombres Big dans le langage Go peut être utilisée pour stocker des entiers de n'importe quelle longueur. Si la génération de nombres aléatoires échoue ou qu'une erreur se produit, la fonction renverra un objet de type error.

2. Exemples d'utilisation de la fonction Int

Ensuite, nous fournissons deux exemples spécifiques d'utilisation de la fonction Int afin que les lecteurs puissent mieux comprendre et utiliser cette fonction.

  1. Exemple 1 : Générer un entier aléatoire entre 1 et 100

Ce qui suit est une implémentation qui utilise la fonction crypto/rand.Int pour générer un entier aléatoire entre 1 et 100.

package main

import (
    "crypto/rand"
    "fmt"
    "math/big"
)

func main() {
    max := big.NewInt(100)
    n, err := rand.Int(rand.Reader, max)
    if err != nil {
        fmt.Println("生成随机数失败:", err)
        return
    }
    fmt.Println(n)
}
Copier après la connexion

En appelant la fonction Reader dans le package crypto/rand et en la passant comme paramètre à la fonction rand.Int, nous pouvons générer n'importe quel entier compris entre 1 et 100. Si une erreur se produit, en affichant le message d'erreur, nous pouvons corriger le code à temps.

  1. Exemple 2 : Générer une chaîne aléatoire

Voici un exemple plus complexe qui montre comment utiliser la fonction crypto/rand.Int pour générer une chaîne aléatoire d'une longueur spécifiée.

package main

import (
    "crypto/rand"
    "fmt"
    "math/big"
)

const charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"

func main() {
    length := 20
    max := big.NewInt(int64(len(charset)))
    data := make([]byte, length)
    for i := 0; i < length; i++ {
        n, err := rand.Int(rand.Reader, max)
        if err != nil {
            fmt.Println("生成随机数失败:", err)
            return
        }
        index := int(n.Int64())
        data[i] = charset[index]
    }
    fmt.Println(string(data))
}
Copier après la connexion

Le code ci-dessus génère une chaîne aléatoire de longueur 20. Les étapes spécifiques sont les suivantes :

1. Définissez un tableau d'octets d'une longueur de 20 pour stocker le nombre aléatoire renvoyé.

2. Définissez la limite supérieure des nombres aléatoires générés sur la longueur du jeu de caractères pour appeler la fonction rand.Int afin de générer n'importe quel entier compris entre 0~len(charset)-1.

3. Utilisez le nombre aléatoire généré comme indice du jeu de caractères et stockez le résultat dans le tableau d'octets.

4. Enfin, convertissez le tableau d'octets en une chaîne et affichez-le.

3. Résumé

Grâce à l'introduction de cet article, nous avons appris l'utilisation de base de la fonction crypto/rand.Int dans le langage Go, qui est très utile pour générer des entiers et des chaînes aléatoires.

Veuillez également noter que les nombres aléatoires ne sont pas complètement aléatoires, mais pseudo-aléatoires. Par conséquent, lors de l’utilisation de la fonction Int pour générer des nombres aléatoires, il est important de s’assurer qu’une source d’entropie suffisante est fournie pour garantir le caractère aléatoire et la sécurité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal