English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Numeri casuali NumPy

Cos'è un numero casuale?

Un numero casuale non significa che ogni volta ci siano numeri diversi. Casuale significa che non può essere previsto logicamente.

Pseudo-casuale e casuale

Il computer lavora su programmi, i programmi sono un set di istruzioni autorizzate. Pertanto, significa che ci deve essere un algoritmo per generare numeri casuali.
Se esiste un programma per generare numeri casuali, può essere predetto, quindi non è un numero casuale vero.
I numeri casuali generati attraverso algoritmi di generazione sono detti numeri pseudo-casuali.
Possiamo generare numeri casuali veri?
Sì. Per generare un numero casuale vero sul nostro computer, dobbiamo ottenere dati casuali da una fonte esterna. La fonte esterna è solitamente le nostre battute di tastiera, i movimenti del mouse, i dati di rete, ecc.
Non abbiamo bisogno di numeri casuali veri, a meno che non siano correlati alla sicurezza (ad esempio, chiavi di crittografia) o che l'applicazione si basi sulla casualità (ad esempio, ruota della fortuna digitale).
In questo tutorial, utilizzeremo numeri pseudo-casuali.

Generazione di numeri casuali

NumPy fornisce il modulo random per gestire numeri casuali, ecco un esempio di generazione di un numero intero casuale tra 0 e 100:

 >>> from numpy import random
 >>> x = random.randint(100)
 >>> print(x)
 56

Generazione di numeri casuali a virgola mobile

Il metodo rand() del modulo random restituisce un numero casuale a virgola mobile tra 0 e 1, ecco un esempio di generazione di un numero casuale a virgola mobile tra 0 e 100:

 >>> from numpy import random
 >>> x = random.rand()
 >>> print(x)
 0.4755747164243269

Generazione di array casuali

In NumPy, possiamo utilizzare i due metodi menzionati nell'esempio precedente per creare array casuali, il metodo randint() accetta il parametro size, in cui possiamo specificare la forma dell'array.
Ecco un esempio di generazione di un array 1-D contenente 5 numeri interi casuali tra 0 e 100:

 >>> from numpy import random
 >>> x = random.randint(100, size=(5))
 >>> print(x)
 [36 14 12 91 36]

Genera un array 2-D con 3 righe, ognuna contenente 5 numeri interi casuali tra 0 e 100:

 >>> from numpy import random
 >>> x = random.randint(100, size=(3, 5))
 >>> print(x)
 [[20 64 23 6 66]
  [74 11 21 61 70]
  [24 47 22 22 31]]

rand() metodo consente anche di specificare la forma dell'array. Ecco un esempio di generazione di un array 1-D contenente 5 numeri casuali a virgola mobile:

 >>> from numpy import random
 >>> x = random.rand(5)
 >>> print(x)
 [0.63254731 0.0275278 0.83592219 0.41890601 0.84496798]

Genera un array 2-D di 3 righe, con ogni riga che contiene 5 numeri casuali:

 >>> from numpy import random
 >>> x = random.rand(3, 5)
 >>> print(x)
 [[0.51798216 0.70541454 0.03600922 0.2279383 0.2184512 ]
  [0.91734846 0.07877026 0.75949221 0.7876666 0.20983625]
  [0.25935065 0.37637584 0.7793815 0.65035139 0.66673048]

choice() genera numeri casuali da un array

Il metodo ti permette di generare valori casuali basati su un array di valori. Il metodo accetta un array come parametro e restituisce casualmente uno di essi.

 >>> from numpy import random
 >>> x = random.choice([3, 5, 7, 9])
 >>> print(x)
 5

Il metodo choice() ti permette anche di restituire un array di valori. Aggiungi un parametro size per specificare la forma dell'array. Genera un array bidimensionale composto dai valori degli array parametrici (3, 5, 7 e 9):

 >>> from numpy import random
 >>> x = random.choice([3, 5, 7, 9], size=(3, 5))
 >>> print(x)
 [[7 9 7 5 9]
  [3 3 3 7 9]
  [7 5 9 3 7]