Python: Numpy. Creare array random

Cerca nel sito

Altri risultati..

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors

Cerca nelle Categorie

numpy

Che cos’è un numero casuale?

Numero casuale NON significa un numero diverso ogni volta. Casuale significa qualcosa che non può essere previsto logicamente.


Pseudo casuale e casuale vero.
I computer lavorano su programmi e i programmi sono un insieme determinato di istruzioni. Quindi significa che esiste un algoritmo per generare  un numero casuale.

→ Se esiste un programma per generare un numero casuale, può essere previsto, quindi non è veramente casuale.

I numeri casuali generati attraverso un algoritmo di generazione sono chiamati pseudo casuali.

Cosa sono i numeri pseudo-casuali

Un numero pseudo-casuale è un numero che appare casuale, ma in realtà non lo è. In effetti, i computer non sono in grado di generare un numero veramente casuale perché i computer sono deterministici e seguono coerentemente un determinato insieme di istruzioni. L’idea alla base di questo è che otterremo sempre lo stesso insieme di numeri casuali per lo stesso seme ( punto di partenza) su qualsiasi macchina.

Possiamo creare numeri veramente casuali?

Sì. Per generare un numero veramente casuale sui nostri computer, abbiamo bisogno di ottenere i dati casuali da una fonte esterna. Questa fonte esterna è generalmente la nostra sequenza di tasti, i movimenti del mouse, i dati sulla rete, ecc.

Non abbiamo bisogno di numeri veramente casuali, a meno che non siano legati alla sicurezza (es. chiavi di crittografia) o la base dell’applicazione sia la casualità (es. Ruote della roulette digitale).

Creare array random

Affrontiamo i seguenti casi:

A ) Un vettore di 5 elementi distribuiti uniformemente fra [0,…… ,10[

B) Un vettore di 5 elementi con distribuzione normale μ = 1 e = σ 0,2

C) Una matrice 3×3 da una distribuzione uniforme in {0;1}

Ti potrebbe interessare anche:  Distanza minima tra due circonferenze: guida pratica con vettori e Python

Creare un array random

Creare array 1D di numeri casuali

numpy.random.randint

Restituisce numeri interi casuali da low (incluso) a high (escluso).

Restituisce interi casuali dalla distribuzione “discreta uniforme” nell’intervallo “semiaperto” [ low , high ). Se high è None (impostazione predefinita), i risultati provengono da [0, low ).

numpy.random.randint

Parametri:

   low : int

L’intero (con segno) più basso da trarre dalla distribuzione (a meno che high=None , nel qual caso questo parametro è l’ intero più alto di questo tipo).

   high : int, opzionale

Se fornito, uno sopra l’intero (con segno) più grande da estrarre dalla distribuzione (vedi sopra per il comportamento se high=Nessuno ).

    size : int o tupla di ints, opzionale

Forma di uscita. Se la forma data è, ad esempio, (m, n, k) , vengono estratti m * n * k campioni. Il valore predefinito è None, nel qual caso viene restituito un singolo valore.

Ritorna:

    out : int o ndarray di ints

array a forma di dimensione di interi casuali dalla distribuzione appropriata, o un singolo int casuale se la dimensione non è fornita.

np.random.seed()

np.random.seed(0)

rende i numeri casuali prevedibili.

>>> numpy.random.seed(0) ; numpy.random.Rand(4)
array([ 0.55,  0.72,  0.6 ,  0.54])
>>> numpy.random.seed(0) ; numpy.random.Rand(4)
array([ 0.55,  0.72,  0.6 ,  0.54])

Se il seed random non viene ripristinato, ad ogni richiamo vengono visualizzati gli stessi numeri:

>>> numpy.random.Rand(4)
array([ 0.42,  0.65,  0.44,  0.89])
>>> numpy.random.Rand(4)
array([ 0.96,  0.38,  0.79,  0.53])

I numeri casuali (pseudo-) funzionano partendo da un numero (il seme), moltiplicandolo per un numero grande, quindi assumendo il modulo di quel prodotto. Il numero risultante viene quindi utilizzato come seme per generare il successivo numero “casuale”.

Ti potrebbe interessare anche:  Imparare Python facilmente

Se vuoi numeri apparentemente casuali, non impostare il seme. Se si dispone di codice che utilizza numeri casuali di cui si desidera eseguire il debug, tuttavia, può essere molto utile impostare il seme prima di ogni esecuzione in modo che il codice esegua la stessa operazione ogni volta che lo si esegue.

Per ottenere i numeri più casuali diversi ogni volta  imposta numpy.random.seed(). Questo farà sì che numpy setta il seed ad un numero casuale ottenuto da /dev/urandom o dal suo analogo di Windows o, se nessuno di questi è disponibile, userà l’orologio.

La sintassi maggiormente utilizzata è:

import numpy as np
np.random.seed()

 

(1715)

PubblicitàPubblicità