w systemie komputerowym nigdy nie jestes wstanie wygenerowac liczb 100% losowych
Wersja do druku
Ja np. biore z dostępnych czujników przy sprawdzaniu Chi Squared wyglada gites, ale taki zwykly rand() to shit, w pewnych odpowiednich warunkach można przewidzieć kolejne liczby.
ej jakis smiec mi wytknął, aby używac w JS zamiast pętli metod tablicowych
o chuj mu chodzi
pozdrawiam
zamiast for (i=0;i<arr.length [...] robisz np. arr.forEach itp
no kurwa dobra, ale on sie odwoływał na czytelność kodu, że niby lepsza przy uzyciu np. Twojego forEacha, a co jesli uzyje pętli? Imo jest jeszcze czytelniejsza niżCytuj:
for(const element of arr){kod}
a tak w ogole to od dziś jestes moim mentorem, za rok mam pisać kod JS na produkcje eloCytuj:
arr.forEach(element=>{ kod })
Luzik, ja tam wole petle też
Jebac tych co za plecami uzywaja metod tablicowych
Tylko ES6 może nas sondzić
mam se takie coś, czyli po prostu generuje se punkty 2d w jakims tam zakresie i maja nie miec sasiadow w pewnym promieniu. no i niby fajnie fajnie, ale strasznie dlugo to sie mieli
to se myslalem zeby pierdolnac to na multimap i dac se jako klucz ten distrx i value distry. bo posortowane to wtedy nie bede musial przepierdalac przez wszytsko nie? tylko nie mam pojecia jak sie z mapy korzysta.Kod:void circle() {
uniform_real_distribution<double> distrx(min_x + 2, max_x - 2);
uniform_real_distribution<double> distry(min_y + 2, max_y - 2);
for (int i = 0; i < 100000; ++i) {
do {
double najblizszy = DBL_MAX;
Point temp = { distrx(gen),distry(gen) };
for (int j = 0; j < i; j++)
if (circles[j].x <= temp.x + 2 && circles[j].x >= temp.x - 2)
najblizszy = min(najblizszy, dist(circles[j], temp));
if(najblizszy > 2) circles[i] = { temp };
} while (najblizszy <= 2);
}
}
jak to by mialo wygladac, najpierw by wypadalo sprawdzic czy temp.x +2 jest wieksze lub rowne i mniejsze niz rowne niz cokolwiek w tej mapie, ale jak to zrobic zeby nie isc po wszystkich elementach mapy? bo poza tym to sb chyba dam rade ale z tym mam :psyduck bo proboje zrozumiec jak dzialaja te wszystkie sety, mapy chuje muje ale nie rozumiem ehhh
@edit
dobra ktos dla mn niech powie czy to mam poprawnie czy cos zjebalem bo nie mam pojecia jak dziala lower i upper bound i nie jestem pewny czy te warunki mam dobrze czy cos pominalem albo cos za duzo sprawdza
no i w sumie tego fora co iteruje od lowest do highest to chyba moge sb darowac jak to jakos przerzuce do do while, ale w sumie nie wiem czy ilosc instrukcji by wtedy sie zmienila jakos znaczaco hmm?Kod:void genCircle::circle() {
uniform_real_distribution<double> distrx(min_x + circleRadius, max_x - circleRadius);
uniform_real_distribution<double> distry(min_y + circleRadius, max_y - circleRadius);
for (int i = 0; i < circleAmount; ++i) {
do {
najblizszy = DBL_MAX;
Point temp = { distrx(gen),distry(gen) };
map<double, double>::iterator it, low, lowest, high, highest;
lowest = circles.lower_bound(temp.x);
highest = circles.upper_bound(temp.x);
if (circles.size() >= 1) {
if (lowest != circles.begin()) lowest = prev(lowest);
if (highest == circles.end()) highest = prev(highest);
do {
low = lowest, high = highest;
if ((*lowest).first >= temp.x - 2 * circleRadius) // jesli istnieje jakis punkt w zakresie od x-2*circleradius do x+2*circleradius
if (lowest != circles.begin()) lowest = prev(lowest); // przesunac lowest zeby sprawdzic czy poprzedni element tez spelnia powyzszy warunek
if ((*highest).first <= temp.x + 2 * circleRadius)
if (next(highest) != circles.end()) highest = next(highest); // przesunac highest zeby sprawdzic czy nastepny element tez spelnia powyzszy warunek
} while (low != lowest || high != highest);
for (it = lowest; it != highest; ++it) najblizszy = min(najblizszy, dist({ (*it).first,(*it).second }, temp)); // sprawdzic odleglosc wszystkie elementow w przedziale od lowest do highest
}
if (najblizszy > 2 * circleRadius) circles.insert(make_pair(temp.x, temp.y)); // dopoki istnieje jakis ktorego odleglosc jest mniejsza niz 2*circleradius to losuj temp jeszcze raz, w innym przypadku wrzuc temp w mape
} while (najblizszy <= 2 * circleRadius);
}
}
@edit2
no dobra faktycznie przyspieszylo to troche jak nie musi przez tego fora przechodzic tylko od razu sprawdza przy zmienianiu iteratora. mozna jeszcze gdzies obciąć trochę czasu?
Kod:void genCircle::circle() {
uniform_real_distribution<double> distrx(min_x + circleRadius, max_x - circleRadius);
uniform_real_distribution<double> distry(min_y + circleRadius, max_y - circleRadius);
for (int i = 0; i < circleAmount; ++i) {
do {
Point temp = { distrx(gen),distry(gen) };
map<double, double>::iterator it, low, lowest, high, highest;
lowest = circles.lower_bound(temp.x);
highest = circles.upper_bound(temp.x);
if (circles.size() >= 1) {
if (lowest != circles.begin()) lowest = prev(lowest);
if (highest == circles.end()) highest = prev(highest);
do {
low = lowest;
high = highest;
if ((*lowest).first >= temp.x - 2 * circleRadius) { // if point exist in range x-2*circleradius, x+2*circleradius
closest = DBL_MAX;
closest = min(closest, dist({ (*lowest).first,(*lowest).second }, temp));
if (lowest != circles.begin())
lowest = prev(lowest); // move lowest to check for previous element
}
if ((*highest).first <= temp.x + 2 * circleRadius) {
closest = DBL_MAX;
closest = min(closest, dist({ (*highest).first,(*highest).second }, temp));
if (next(highest) != circles.end())
highest = next(highest);
}
} while (low != lowest || high != highest);
}
if (closest > 2 * circleRadius) circles.insert(make_pair(temp.x, temp.y)); // insert if temp doesnt overlap anything, else reroll
} while (closest <= 2 * circleRadius);
}
}
torgowy irc nie działa?
frinołd się pochorował już jakiś czas temu także tego, ale chyba można by na liberze odpalić, tylko czy ktokolwiek przyjdzie?
No pewnie że tak, jeszcze jaaak
pierwsza techniczna rozmowa w zyciu juz za mna
teoretyczne pytanka to spoko ale jak kazali udostepnic ekran i tak pisac komponenty w react z ograniczonym czasem to juz caly chuj z tego wyszedl