Potrzebuję wygenerować losowe pary liczb (floats) w określonym zakresie. Zasadniczo są to punkty za [łac LNG] par (długość geograficzna - współrzędne szerokości geograficznej)PHP random - exluding/include/floats/negatives i inne zwierzęta
Myślałem To byłoby bardzo proste z
<?php echo (rand(0,60).'.'.rand(0,99999999999999).' || '); // yes, a string is ok...?>
ale to nie daje mi kontrolę nad tym, jak wiele numerów po float point (rozdzielczość) - które muszę naprawić.
Więc następna faza była:
<?php echo (rand(0,60*pow(10,6)))/pow(10,6).' || '; //pow(10,$f) where $ is the resolution ?>
i to działa. rodzaj .. czasami daje rezultaty jak
22.212346 || 33.134 || 36.870757 || //(rare , but does happen)
ale hej - współrzędne są od -90 do 90 (dł) i -180 do 180 (LAN) - co około minus?
echo (rand(0,-180*pow(10,9)))/pow(10,9).' || ';
że powinien to zrobić .. i łącząc wszystko razem powinno dać mi jakoś losowy ciąg jak
23.0239423525 || -135.937419777
więc po tym wszystkim wprowadzenie - tutaj
jest
są moje pytanie (s).
Być nowicjuszem jakim jestem - czy czegoś brakuje? czy nie ma wbudowanej funkcji do generowania losowych pływaków z dodatnim lub ujemnym zakresem w PHP?
Dlaczego powyższa funkcja czasami okazuje tylko rozdzielczość 3,4 lub 5, jeśli ma wrócić 6 (nie zastosowałem ABS ani ROUND) - czy jest zautomatyzowane zaokrąglanie w php? a jeśli tak, to jak tego uniknąć?
Zauważyłem, że "losowy" nie jest tak losowy - generowane liczby są zawsze mniej więcej seriami między zakresem - blisko siebie. czy PHP to prosty, bardzo bardzo, bardzo szybko obracający się licznik?
JAK WYKLUCZYĆ zakres od tego wygenerowanego zakresu? (lub faktycznie i tablica zakresów)
Wiem, że to wiele pytań, ale każda pomoc/myśl będzie świetna! (A jeśli pierwsza jest pozytywnie odpowiedział, reszta może być niemal ignorowana :-)
Cześć dzięki - twój kod jest oczywiście bardziej elegancki i skuteczniejszy niż mój - nie znałem 'number_format()' - ale jak mogę WYKLUCZYĆ zakres od funkcji losowej (druga część pytania ..) –
Cześć @Obmerk Ninenine zobacz moją edycję. –
dziękuję, chodzi o to, że muszę wykluczyć zakres SZCZEGÓŁOWY z RANDOM - a nie RANDOM z RANDOM - tylko po to, aby dać przykład, powiedzmy, że muszę wygenerować współrzędne świata, ale WYKLUCZAĆ wszystkie współrzędne, które są dla przykład "Korea Północna" lub "pustynie" - więc mam zestaw koordynatów, w jaki sposób mogę wykluczyć te zakresy? używanie tablicy jest moją jedyną opcją? tablica będzie ogromna ... (chyba że uda mi się jakoś opisać zamknięty wielokąt w php ...) dlatego RANGE jest moją jedyną opcją, którą myślę. ale jak dokładnie? –