Generatore codici random: guida in JavaScript, Python, Go, C#, Java

Introduzione

In questa guida vedremo come creare un generatore di codici random in diversi linguaggi di programmazione (JavaScript, Python, Go, C#, Java). Ti guiderò passo dopo passo nella realizzazione di una funzione in grado di generare codici casuali e univoci, utilizzando gli strumenti e le migliori pratiche offerte da ogni linguaggio.
La funzione che svilupperò sarà altamente personalizzabile e potrà creare codici di lunghezza variabile, con prefissi, suffissi e caratteri speciali. Partirò dalle basi per rendere la guida accessibile anche ai principianti.


Requisiti del progetto

La funzione che andremo a realizzare avrà i seguenti requisiti:

  • Input:
    • Numero caratteri (minimo = 3, default = 10)
    • Numero di codici da creare (opzionale, default = 1)
    • Prefisso e suffisso (opzionali, default = stringa vuota)
    • Uppercase, Lowercase, Numeri e Caratteri Speciali (tutti opzionali, default = true)
  • Output:
    Una lista di codici creati secondo i parametri specificati.

1. Generatore di codici casuali in JavaScript

Ambiente di sviluppo

Per realizzare il generatore in JavaScript, puoi utilizzare Node.js oppure inserire il codice direttamente in una pagina web.

Snippet di codice JavaScript

function generateRandomCode(length = 10, count = 1, prefix = "", suffix = "", options = {}) {
  const defaultOptions = { uppercase: true, lowercase: true, numbers: true, specialChars: true };
  options = { ...defaultOptions, ...options };
  
  const charSets = {
    uppercase: "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
    lowercase: "abcdefghijklmnopqrstuvwxyz",
    numbers: "0123456789",
    specialChars: "!@#$%^&*()-_=+[]{}<>?"
  };

  let availableChars = "";
  if (options.uppercase) availableChars += charSets.uppercase;
  if (options.lowercase) availableChars += charSets.lowercase;
  if (options.numbers) availableChars += charSets.numbers;
  if (options.specialChars) availableChars += charSets.specialChars;

  if (availableChars.length === 0) throw new Error("Devi selezionare almeno un set di caratteri.");

  const generateCode = () => {
    let code = "";
    for (let i = 0; i < length; i++) {
      code += availableChars.charAt(Math.floor(Math.random() * availableChars.length));
    }
    return `${prefix}${code}${suffix}`;
  };

  return Array.from({ length: count }, generateCode);
}

// Esempio di utilizzo
console.log(generateRandomCode(10, 5, "PRE-", "-SUF", { uppercase: true, numbers: true, specialChars: false }));

Esempio di output

PRE-XA9DZL5F7-SUF
PRE-7GLF2PXD3J-SUF
PRE-ZY6DFJ3Q89-SUF
PRE-3LKD9ZFA7X-SUF
PRE-5DJQAZ9F2L-SUF

2. Generatore di codici casuali in Python

Ambiente di sviluppo

Assicurati di avere Python installato. Puoi utilizzare qualsiasi editor di testo o un IDE come PyCharm o VSCode.

Snippet di codice Python

import random
import string

def generate_random_code(length=10, count=1, prefix="", suffix="", uppercase=True, lowercase=True, numbers=True, special_chars=True):
    char_sets = {
        "uppercase": string.ascii_uppercase,
        "lowercase": string.ascii_lowercase,
        "numbers": string.digits,
        "special_chars": "!@#$%^&*()-_=+[]{}<>?"
    }
    
    available_chars = ""
    if uppercase:
        available_chars += char_sets["uppercase"]
    if lowercase:
        available_chars += char_sets["lowercase"]
    if numbers:
        available_chars += char_sets["numbers"]
    if special_chars:
        available_chars += char_sets["special_chars"]

    if not available_chars:
        raise ValueError("Devi selezionare almeno un set di caratteri.")

    def generate_code():
        return prefix + "".join(random.choice(available_chars) for _ in range(length)) + suffix

    return [generate_code() for _ in range(count)]

# Esempio di utilizzo
print(generate_random_code(10, 5, "PRE-", "-SUF", uppercase=True, lowercase=False, special_chars=False))

Esempio di output

PRE-ZND394FQW-SUF
PRE-DKJ382FPL-SUF
PRE-LFJ920ZQR-SUF
PRE-XAP348NDF-SUF
PRE-QWL738DFX-SUF

3. Generatore di codici casuali in Java

Ambiente di sviluppo

Assicurati di avere il JDK installato e utilizza un IDE come IntelliJ IDEA o Eclipse.

Snippet di codice Java

import java.util.Random;

public class RandomCodeGenerator {
    public static void main(String[] args) {
        String[] codes = generateRandomCode(10, 5, "PRE-", "-SUF", true, true, true, false);
        for (String code : codes) {
            System.out.println(code);
        }
    }

    public static String[] generateRandomCode(int length, int count, String prefix, String suffix, boolean uppercase, boolean lowercase, boolean numbers, boolean specialChars) {
        String availableChars = "";
        if (uppercase) availableChars += "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        if (lowercase) availableChars += "abcdefghijklmnopqrstuvwxyz";
        if (numbers) availableChars += "0123456789";
        if (specialChars) availableChars += "!@#$%^&*()-_=+[]{}<>?";

        if (availableChars.isEmpty()) throw new IllegalArgumentException("Devi selezionare almeno un set di caratteri.");

        Random random = new Random();
        String[] codes = new String[count];
        for (int i = 0; i < count; i++) {
            StringBuilder code = new StringBuilder();
            for (int j = 0; j < length; j++) {
                code.append(availableChars.charAt(random.nextInt(availableChars.length())));
            }
            codes[i] = prefix + code.toString() + suffix;
        }
        return codes;
    }
}

Esempio di output

PRE-XJP92FQL3-SUF
PRE-DFL38WZP7-SUF
PRE-ZPQ48JFL2-SUF
PRE-FQL72XD93-SUF
PRE-JWP83XZL9-SUF

4. Generatore di codici casuali in C#

Ambiente di sviluppo

Utilizza Visual Studio o Visual Studio Code con il .NET SDK.

Snippet di codice C#

using System;
using System.Text;

class Program
{
    static void Main(string[] args)
    {
        var codes = GenerateRandomCode(10, 5, "PRE-", "-SUF", true, true, true, false);
        foreach (var code in codes)
        {
            Console.WriteLine(code);
        }
    }

    static string[] GenerateRandomCode(int length = 10, int count = 1, string prefix = "", string suffix = "", bool uppercase = true, bool lowercase = true, bool numbers = true, bool specialChars = true)
    {
        string availableChars = "";
        if (uppercase) availableChars += "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        if (lowercase) availableChars += "abcdefghijklmnopqrstuvwxyz";
        if (numbers) availableChars += "0123456789";
        if (specialChars) availableChars += "!@#$%^&*()-_=+[]{}<>?";

        if (string.IsNullOrEmpty(availableChars)) throw new ArgumentException("Devi selezionare almeno un set di caratteri.");

        var random = new Random();
        string GenerateCode()
        {
            var code = new StringBuilder();
            for (int i = 0; i < length; i++)
            {
                code.Append(availableChars[random.Next(availableChars.Length)]);
            }
            return prefix + code + suffix;
        }

        var codes = new string[count];
        for (int i = 0; i < count; i++)
        {
            codes[i] = GenerateCode();
        }
        return codes;
    }
}

Esempio di output

PRE-DFJ83WPL7-SUF
PRE-KLZ92FJD8-SUF
PRE-QWP38DJF2-SUF
PRE-FJL49XZQ7-SUF
PRE-DJX37FPL8-SUF

5. Generatore di codici random in Go

Ambiente di sviluppo

Per eseguire il codice Go, assicurati di avere Go installato e configura il tuo ambiente.

Snippet di codice Go

package main

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

func generateRandomCode(length int, count int, prefix string, suffix string, uppercase bool, lowercase bool, numbers bool, specialChars bool) []string {
    charSets := map[string]string{
        "uppercase": "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
        "lowercase": "abcdefghijklmnopqrstuvwxyz",
        "numbers":   "0123456789",
        "specialChars": "!@#$%^&*()-_=+[]{}<>?",
    }

    availableChars := ""
    if uppercase {
        availableChars += charSets["uppercase"]
    }
    if lowercase {
        availableChars += charSets["lowercase"]
    }
    if numbers {
        availableChars += charSets["numbers"]
    }
    if specialChars {
        availableChars += charSets["specialChars"]
    }

    if len(availableChars) == 0 {
        panic("Devi selezionare almeno un set di caratteri.")
    }

    generateCode := func() string {
        code := ""
        for i := 0; i < length; i++ {
            randIndex, _ := rand.Int(rand.Reader, big.NewInt(int64(len(availableChars))))
            code += string(availableChars[randIndex.Int64()])
        }
        return prefix + code + suffix
    }

    codes := make([]string, count)
    for i := 0; i < count; i++ {
        codes[i] = generateCode()
    }
    return codes
}

func main() {
    codes := generateRandomCode(10, 5, "PRE-", "-SUF", true, true, true, false)
    for _, code := range codes {
        fmt.Println(code)
    }
}

Esempio di output

PRE-FKL29JD73-SUF
PRE-ZPL08FND3-SUF
PRE-XJF27DL93-SUF
PRE-WQL38FJP4-SUF
PRE-9DFXZL728-SUF

Conclusione

In questa guida abbiamo visto come creare codici casuali utilizzando linguaggi di programmazione diversi: JavaScript, Python, Go, C# e Java. Ora puoi scegliere il linguaggio più adatto alle tue esigenze e integrare questa funzione nei tuoi progetti!


Risorse aggiuntive

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Torna in alto