jestem generujących listę współrzędnych na placu przy użyciu<random> uniform_real_distribution z minimalnej odległości pomiędzy punktami
#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;
}
Chciałbym zapewnić, że nie jest to minimalna odległość między dwoma dowolnymi punktami. Do mojego użytku, musi to być spełnione, gdy stosowane są okresowe warunki brzegowe.
- Preferowane rozwiązanie to wbudowana metoda z biblioteki
<random>
. Czy jest jakiś? - Druga najlepsza, każda inna paczka zawierająca szybki sposób wykonania kontroli (o ile jest łatwa do użycia).
- W najgorszym przypadku mogę napisać własny skrypt, który byłby
O(n^2)
, ponieważ nie jestem zbytnio zainteresowany wydajnością w tej chwili. Chyba że istnieje jakiś prosty algorytm do wdrożenia, który może to zrobić.
Inne pytania dotyczące miejsca trzeciego punktu lub innego środowiska z <random>
.
Możesz umieścić swoje punkty w pojemniku. Dla n-tego punktu sprawdź odległość między istniejącymi i nim, a jeśli jest zaznaczone wymaganie odległości, dodaj je do listy. Nie jest zoptymalizowany, ale jest punktem wyjścia. – Jepessen
ile punktów potrzebujesz wygenerować? –
Teraz jestem w porządku z około 5000 w najlepszym razie. W drugiej chwili prawdopodobnie chciałbym o wiele więcej, rzędu miliona. –