Tādi lasītāji kā jūs palīdz atbalstīt MUO. Veicot pirkumu, izmantojot saites mūsu vietnē, mēs varam nopelnīt filiāles komisiju. Lasīt vairāk.

Nejaušu skaitļu ģenerēšana ir svarīga daudziem uzdevumiem. Tie ietver spēļu izstrādi, kriptogrāfiju un datu analīzi. Nejaušas vērtības ļauj iegūt atšķirīgus rezultātus ar mainīguma un neparedzamības elementu.

Go nodrošina divas pakotnes nejaušu vērtību ģenerēšanai standarta bibliotēkā: matemātika/rands un kriptogrāfija/rands. The matemātika/rands pakete galvenokārt paredzēta matemātiskām darbībām. The kriptogrāfija/rands pakotne apstrādā kriptogrāfiski drošas darbības.

Randa paketes

The matemātika/rands pakete nodrošina elastīgu metodi nejaušu skaitļu ģenerēšana. Tas ievieš dažādas pseidogadījuma skaitļu paaudzes. Pakete var ģenerēt nejaušu skaitu ar dažādiem sadalījumiem un izmantot sēklas, lai kontrolētu nejaušo secību. Tas var arī ģenerēt nejaušus skaitļus vienlaikus vai paralēli.

The kriptogrāfija/rands pakotne ievieš kriptogrāfiski drošu nejaušo skaitļu ģeneratoru. Tas ietver funkcionalitāti nejaušu pirmskaitļu ģenerēšanai ar lielu varbūtību.

instagram viewer

Tā kā šīm pakotnēm ir vienāds nosaukums, jums būs jāizmanto aizstājvārdi, ja vēlaties izmantot abus vienā programmā, piemēram:

imports (
crand "kripto/rands"
mrand "matemātika/rands"
)

Nejauši veselu skaitļu ģenerēšana programmā Go

Jūs varat izmantot matemātika/randsIntn funkcija, lai ģenerētu nejaušus skaitļus diapazonā.

imports (
"fmt"
"matemātika/rands"
"laiks"
)

funcgalvenais() {
rand. Sēklas (laiks. Tagad().UnixNano())

// Intn ģenerē nejaušu veselu skaitli no 0 līdz 100
// (neskaitot 100)
randomInt := rand. Intn(100)

fmt. Println (randomInt)
}

Šis kods nodod pašreizējo laiku uz Sēkla funkciju. Tas inicializē noklusējuma nejaušo skaitļu ģeneratoru pseidogadījumam.

The Intn rand pakotnes funkcija ģenerē nejaušu skaitli starp noteiktu diapazonu, šajā gadījumā no 0 līdz 100.

Ģenerējiet nejaušus peldošā komata skaitļus

Varat ģenerēt nejaušus peldošā komata skaitļus, izmantojot Pludiņš32 un Pludiņš64 funkcijas. Tie atgriež attiecīgi 32 bitu un 64 bitu peldošā komata skaitļus.

Lūk, kā Go var ģenerēt nejaušus 64 bitu peldošā komata skaitļus.

imports (
"fmt"
"matemātika/rands"
"laiks"
)

funcgalvenais() {
rand. Sēklas (laiks. Tagad().UnixNano())

// ģenerē nejaušu float64 no 0.0 līdz 1.0
randomFloat := rand. Float64()

fmt. Println (randomFloat)
}

32 bitu peldošā komata skaitļu ģenerēšanas process ir tāds pats kā nejaušu 64 bitu peldošā komata skaitļu ģenerēšana.

Kriptogrāfiski drošu nejaušu skaitļu ģenerēšana programmā Go

Jūs varat izmantot Int funkcija kriptogrāfija/rands pakotni, lai ģenerētu kriptogrāfiski drošu izlases numuru. The Int funkcija uzņem lasītāja gadījumu un maksimālo ierobežojumu skaitu.

imports (
"kripto/rands"
"fmt"
"matemātika/liels"
)

funcgalvenais() {
// Izveidojiet lielu. Int ar maksimālo vērtību vēlamajam diapazonam
max := liels. NewInt(100000000)

// Izveidojiet izlases lielu. Int
// Pirmais arguments ir lasītājs, kas atgriež nejaušus skaitļus
// Otrais arguments ir maksimālā vērtība (neieskaitot)
randInt, err := rand. Int (rand. Lasītājs, maks.)

ja kļūda! = nulle {
fmt. Println("Kļūda, ģenerējot nejaušu numuru:", kļūda)
atgriezties
}

fmt. Println("Nejaušs skaitlis:", randInt)
}

The maks mainīgais definē nejaušā skaitļa maksimālo vērtību, izmantojot JaunsInt funkcija matemātika/lielais iepakojums. The Int funkcija atgriež nejaušu veselu skaitli un apstrādes kļūdu.

Kriptogrāfiski drošu nejaušu vērtību ģenerēšana

The kriptogrāfija/rands pakotne nenodrošina iebūvētu ģenerēšanas funkcionalitāti kriptogrāfiski drošs nejaušas virknes. Tomēr varat to apiet, izmantojot Lasīt funkciju.

imports (
"kripto/rands"
"fmt"
)

funckriptoNejauši(stringChars stīga, vērtībaLength int32)stīga {
bytesSlice := veidot([]baits, valueLength)
_, err := rand. Lasīt (bytesSlice)

ja kļūda! = nulle {
atgriezties"Radās kļūda, lasot no baitu daļas"
}

priekš poz., vērtība := diapazons bytesSlice {
randomizēt := vērtība % baits(len(stringChars))
bytesSlice[pos] = virkneChars[izlases veidā]
}

atgrieztiesstīga(bytesSlice)
}

funcgalvenais() {
fmt. Println (cryptoRandom("Pneimonoultram" +
"Ikroskopiskā silikovulkanokonioze", 10))
}

The kriptoNejauši Iepriekš minētā funkcija uzņem virkni, no kuras ģenerēt nejaušu virkni. Tas arī aizņem noteiktu garumu — 32 bitu veselu skaitli — un atgriež virkni.

Iekš kriptoNejauši funkcija, bytesSlice mainīgais ir vajadzīgā virknes garuma šķēle. For-range cilpa šķērso baitu šķēli un atgriež un izgūst slāņa elementu moduli un virknes garumu baitos. Tas atjaunina baitu slāņa indeksu ar virknes moduļu vērtības indeksu.

Visbeidzot, kriptoNejauši funkcija atgriež baitu slāņa virknes formātu.

Izmantojot Go, varat ģenerēt UUID

Nejaušu vērtību ģenerēšana noder dažādiem lietošanas gadījumiem. Ja jums ir vajadzīgas daudzas nejaušas, unikālas vērtības, varat izmantot UUID.

UUID (universāli unikālie identifikatori) nodrošina identifikatoru globālu unikalitāti. Varat tos izmantot, lai atšķirtu resursus dažādās sistēmās, vienlaikus izvairoties no nosaukumu konfliktiem.

Ir daudzas pakotnes, kuras varat izmantot, lai ģenerētu UUID pakalpojumā Go. Lai izsauktu uuid, varat izmantot OS pakotni komandu savā operētājsistēmā, izmantojiet Google UUID pakotni vai ģenerēšanai izmantojiet pakotni gouuid UUID.