La sfida
Scrivi un programma o una funzione che non accetta input e genera un vettore di lunghezza in una direzione casuale teoricamente uniforme .
Ciò equivale a un punto casuale sulla sfera descritto da
risultante in una distribuzione come tale
Produzione
Tre galleggianti da una distribuzione casuale teoricamente uniforme per cui l'equazione è vera ai limiti di precisione.
Commenti sulla sfida
- La distribuzione casuale deve essere teoricamente uniforme . Cioè, se il generatore di numeri pseudo-casuali dovesse essere sostituito con un vero RNG dai numeri reali , si tradurrebbe in una distribuzione casuale uniforme di punti sulla sfera.
- Generare tre numeri casuali da una distribuzione uniforme e normalizzarli non è valido: ci sarà una propensione verso gli angoli dello spazio tridimensionale.
- Allo stesso modo, generare due numeri casuali da una distribuzione uniforme e usarli come coordinate sferiche non è valido: ci sarà una propensione verso i poli della sfera.
- Una corretta uniformità può essere ottenuta mediante algoritmi che includono ma non si limitano a:
- Generare tre numeri casuali , e da una normale distribuzione (gaussiana) attorno e normalizzare.
- Genera tre numeri casuali , e da una distribuzione uniforme nell'intervallo . Calcola la lunghezza del vettore di . Quindi, se, rifiuta il vettore e genera un nuovo set di numeri. Altrimenti, se, normalizzare il vettore e restituire il risultato.
- Genera due numeri casuali e da una distribuzione uniforme nell'intervallo e convertili in coordinate sferiche in questo modo: modo che,epossano essere calcolati da
- Fornisci nella tua risposta una breve descrizione dell'algoritmo che stai utilizzando.
- Maggiori informazioni sulla selezione del punto sfera su MathWorld .
Esempi di output
[ 0.72422852 -0.58643067 0.36275628]
[-0.79158628 -0.17595886 0.58517488]
[-0.16428481 -0.90804027 0.38532243]
[ 0.61238768 0.75123833 -0.24621596]
[-0.81111161 -0.46269121 0.35779156]
Revisione generale
- Questo è code-golf , quindi vince la risposta usando il minor numero di byte in ogni lingua.
- Si applicano le regole standard , le regole I / O e le scappatoie .
- Includi un link Provalo online o equivalente per dimostrare il funzionamento del tuo codice.
- Motivare la risposta con una spiegazione del codice.
pi/6 ≈ 0.5236
di produrre un output. Questa è l'area della sfera inscritta nel cubo dell'unità-area