sto generando un elenco di coordinate in un quadrato utilizzando<random> uniform_real_distribution con distanza minima tra i punti
#include <random>
using namespace std;
int main(){
random_device rd;
long int seed = rd();
default_random_engine gen(seed);
double max=10.0, min=-10.0;
uniform_real_distribution<double> uni_real(min,max);
double random_x = uni_real(gen);
double random_y = uni_real(gen);
return 0;
}
desidero assicurare che vi sia una distanza minima tra due punti. Per il mio utilizzo, questo deve valere quando vengono applicate condizioni al contorno periodiche.
- La soluzione preferita sarebbe un metodo incorporato nella libreria
<random>
. C'è qualche? - In secondo luogo, qualsiasi altro pacchetto contenente un modo rapido per eseguire il controllo (purché sia facile da utilizzare).
- Nel peggiore dei casi, posso scrivere il mio script di base che sarebbe
O(n^2)
perché non mi preoccupo troppo dell'efficienza in questo momento. A meno che non ci sia un algoritmo facile da implementare in grado di farlo.
Altre domande su dove si gestiscono il terzo punto o con altro ambiente da <random>
.
Puoi mettere i tuoi punti in un contenitore. Per l'ennesimo punto, controlla la distanza tra quelle esistenti e, se il requisito di distanza è selezionato, aggiungilo alla lista. Non è ottimizzato, ma è un punto di partenza. – Jepessen
quanti punti hai bisogno di generare? –
In questo momento sto bene con circa 5000 al massimo. In un secondo momento, probabilmente mi piacerebbe molto di più, nell'ordine di un milione. –