MB22 Opublikowano 9 Kwietnia 2011 Udostępnij Opublikowano 9 Kwietnia 2011 Jak zrobić, że Game Maker wylicza pierwiastek z jakiejś liczby? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
baca Opublikowano 9 Kwietnia 2011 Udostępnij Opublikowano 9 Kwietnia 2011 sqrt(wartość) Opis nasz w dokumentacji. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TheMarcQ Opublikowano 9 Kwietnia 2011 Udostępnij Opublikowano 9 Kwietnia 2011 lub zrob skrypt pierwiastek() z takim kodem w srodku GML p=0; //początek przedziału w którym wyszukujemy wyniku k=argument0; //jako argument otrzymujemy liczbę której pierwiastek chcemy znaleźć while(k-p>0.001) //W pewnym momencie nasz przedział wyszukiwania będzie bardzo mały. Taka dokładność nas zadowala. { q=((p+k)/2); //Strzelamy w połowę przedziału i zapisujemy do zmiennej q (zauważ, że tu nie zaokrąglamy już q) if(q*q>=argument0) //jeśli q jest większe lub równe szukanemu pierwiastkowi k=q; //ucinamy przedział o wszystkie liczby większe od q (ustawiamy koniec przedziału wyszukiwania na q) else //w przeciwnym wypadku... p=q; //ucinamy przedział o wszystkie liczby mniejsze od q (zauważ, że brak tu +1 z poprzedniego kodu) } return p; a odwoluj sie do tego przez pierwiastek(liczbaktoracheszspierwiastkowac) jest to metoda szybsza i mozesz ustalic jakie przyblizenie chcesz osiagnac. Jak chcesz zobaczyc o cb biega w tym kliknij Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
baca Opublikowano 9 Kwietnia 2011 Udostępnij Opublikowano 9 Kwietnia 2011 @Up tylko po co? I czy napewno jest szybsze? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muuuuczek567 Opublikowano 9 Kwietnia 2011 Udostępnij Opublikowano 9 Kwietnia 2011 @TheMarcQ: lol. To jest znacznie wolniejsze. Nawet pusty skrypt jest wolniejszy od dowolnej funkcji z rozdziału o funkcjach matematycznych. Pierwiastek dowolnego stopnia z dowolnej liczby wyliczysz następująco: power(liczba, 1/stopień_pierwiastka) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Platyna Opublikowano 9 Kwietnia 2011 Udostępnij Opublikowano 9 Kwietnia 2011 jest to metoda szybsza i mozesz ustalic jakie przyblizenie chcesz osiagnac. Sam jesteś szybszy. Dam głowę, że GMowe sqrt również działa logarytmicznie i powinno działać równie szybko. Ale oczywiście z racji, że to jest GM to algorytm własny o tej samej złożoności będzie na pewno działał wolniej od wbudowanej funkcji. Wyliczanie pierwiastka posłużyło mi w tym artykule tylko jako wybitny przykład zastosowania binara. Nie ma sensu się bawić jak mamy funkcję wbudowaną. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Makary155 Opublikowano 9 Kwietnia 2011 Udostępnij Opublikowano 9 Kwietnia 2011 Można to zbadać. GML zmienna1=current_time; repeat(1000) { //kod here } zmienna2=current_time; show_message(string(zmienna2-zmienna1)+' milisekund!'); Można się też pobawić zapisując do tablicy i wyciągnąć średnią, podejrzewam że funkcje czasu w gmie nie są zbyt dokładne. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
baca Opublikowano 9 Kwietnia 2011 Udostępnij Opublikowano 9 Kwietnia 2011 Nie trzeba sprawdzać by wiedzieć bo jest szybsze. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muuuuczek567 Opublikowano 9 Kwietnia 2011 Udostępnij Opublikowano 9 Kwietnia 2011 @Makary: wystarczająco dokładne do tego typu porównań. 100k wywołań funkcji sqrt(93) zajęło 141 ms, power(93,0.5) - 174 ms, pierwiastek(93) - 10500 ms (!). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Platyna Opublikowano 9 Kwietnia 2011 Udostępnij Opublikowano 9 Kwietnia 2011 Aczkolwiek w C++ różnica byłaby niezauważalna. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
baca Opublikowano 9 Kwietnia 2011 Udostępnij Opublikowano 9 Kwietnia 2011 Bo c++ nie pracuje w wirtualnej maszynie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się