Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Tafsiran dokumentasi bahasa Go: Penjelasan terperinci tentang fungsi crypto/rand.Int

Tafsiran dokumentasi bahasa Go: Penjelasan terperinci tentang fungsi crypto/rand.Int

WBOY
WBOYasal
2023-11-03 08:03:171502semak imbas

Tafsiran dokumentasi bahasa Go: Penjelasan terperinci tentang fungsi crypto/rand.Int

Bahasa Go ialah bahasa pengaturcaraan moden Disebabkan kecekapan dan ciri yang mudah dipelajari, semakin ramai pembangun mula menggunakan bahasa ini dalam projek. Dalam bahasa Go, penggunaan nombor rawak adalah keperluan yang sangat biasa, dan fungsi Int dalam crypto/rand, pakej penjana nombor rawak yang disulitkan yang disertakan dengan bahasa Go, menyediakan cara untuk menjana integer rawak.

Artikel ini akan menerangkan fungsi crypto/rand.Int secara terperinci dan memberikan contoh kod khusus.

1. Fungsi crypto/rand.Int

Fungsi crypto/rand.Int ialah fungsi penjanaan integer rawak yang disediakan dalam pakej crypto/rand bahasa Go. Fungsi ini mempunyai dua parameter: rand parameter input, yang mewakili sumber penjanaan nombor rawak, anggota parameter output, yang mewakili jumlah panjang integer rawak keluaran.

Prototaip fungsi fungsi ini adalah seperti berikut:

func Int(rand io.Reader, max *big.Int) (n *big.Int, err error)

Antaranya, parameter rand ialah sumber dari mana nombor rawak dijana, yang biasanya boleh diperolehi dengan memanggil fungsi Reader dalam pakej crypto/rand. Parameter maks mewakili jumlah panjang integer rawak keluaran, dan nilai lalai ialah 1.

Jenis pemulangan fungsi ini ialah *big.Int, kerana perpustakaan nombor besar Big dalam bahasa Go boleh digunakan untuk menyimpan integer dengan sebarang panjang. Jika penjanaan nombor rawak gagal atau ralat berlaku, fungsi akan mengembalikan objek jenis ralat.

2. Contoh penggunaan fungsi Int

Seterusnya kami menyediakan dua contoh penggunaan fungsi Int khusus supaya pembaca lebih memahami dan menggunakan fungsi ini.

  1. Contoh 1: Hasilkan integer rawak antara 1 dan 100

Berikut ialah pelaksanaan yang menggunakan fungsi crypto/rand.Int untuk menjana integer rawak antara 1 dan 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)
}

Dengan memanggil fungsi Pembaca dalam pakej crypto/rand dan menghantarnya sebagai parameter kepada fungsi rand.Int, kita boleh menjana sebarang integer antara 1 dan 100. Jika ralat berlaku, dengan mengeluarkan mesej ralat, kami boleh membetulkan kod dalam masa.

  1. Contoh 2: Menjana rentetan rawak

Berikut ialah contoh yang lebih kompleks yang menunjukkan cara menggunakan fungsi crypto/rand.Int untuk menjana rentetan rawak dengan panjang yang ditentukan.

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))
}

Kod di atas menjana rentetan rawak panjang 20. Langkah-langkah khusus ialah:

1 Tentukan tatasusunan bait dengan panjang 20 untuk menyimpan nombor rawak yang dikembalikan.

2 Tetapkan had atas nombor rawak yang dijana kepada panjang set aksara untuk memanggil fungsi rand.Int untuk menjana sebarang integer antara 0~len(charset)-1.

3 Gunakan nombor rawak yang dijana sebagai subskrip set aksara dan simpan hasilnya dalam tatasusunan bait.

4 Akhir sekali, tukar tatasusunan bait kepada rentetan dan keluarkannya.

3. Ringkasan

Melalui pengenalan artikel ini, kami telah mempelajari tentang penggunaan asas fungsi crypto/rand.Int dalam bahasa Go, yang sangat berguna untuk menjana integer dan rentetan rawak.

Selain itu, sila ambil perhatian bahawa nombor rawak tidak sepenuhnya rawak, tetapi pseudo-rawak. Oleh itu, apabila menggunakan fungsi Int untuk menjana nombor rawak, adalah penting untuk memastikan sumber entropi yang mencukupi disediakan untuk memastikan rawak dan keselamatan.

Atas ialah kandungan terperinci Tafsiran dokumentasi bahasa Go: Penjelasan terperinci tentang fungsi crypto/rand.Int. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn