Threef Opublikowano 28 Listopada 2015 Udostępnij Opublikowano 28 Listopada 2015 Cześć wszystkim. Wydaje mi się że najnowszy update GM:S czyli v1.4.1675 może mieć problemy z liczbami losowymi. W changelog wersji jest wyraźnie wyszczególnione że zmieniony został sposób w jaki liczby losowe są generowane. Z tego co zaobserwowałem to ustawienie seed nie ma wpływu na resztę funkcji. Nie ważne czy randomize() czy random_set_seed() nie ma to wpływu. random_get_seed() zwróci nowo wygenerowany seed, ale random() korzysta jakby z innego seedu. Ten inny seed jest resetowany do pierwotnej pozycji przy każdym użyciu randomize() albo random_set_seed(), ale nie na seed jaki oczekujemy. Sprawdźcie u siebie czy to nie będzie zwracać różnych liczb: GML (step) randomize() show_debug_message(random(100)) Edit: Sam się teraz gubię. Nie wiem co jest co. Dalej nie działa jak powinno. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sutikku Opublikowano 28 Listopada 2015 Udostępnij Opublikowano 28 Listopada 2015 11.81 60.37 94.12 74.48 89.82 9.60 76.37 15.88 29.87 82.80 6.11 Pierwsze 5 liczb z dwóch uruchomień. (kod wrzuciłem w draw_gui, nie wiem czemu) Po ustawieniu seedu na 100, zwraca mi, że seed to 100, a liczby random są zawsze te same. //edit, czyli chyba wszystko dobrze, coś sprawdzić? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 28 Listopada 2015 Autor Udostępnij Opublikowano 28 Listopada 2015 To może dokładnie podam co robię. GML d=string(global.zmienna1*(current_year-2000)) +string(current_month) +string(global.zmienna2*current_day) +string(current_hour) +string(floor(current_minute/15)) random_set_seed(real(d)) Teraz się zastanawiam czy np jest maksymalna wartość jaką może przybrać seed. Edit: To już działa: o_0 GML random_set_seed(real(d)/1000) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sutikku Opublikowano 28 Listopada 2015 Udostępnij Opublikowano 28 Listopada 2015 Sprawdziłem. Losowość liczb jest stała. Sprawdziłem też jaki seed mi zwraca seed 151156142 random 64.75 real(d) 151156142 I takie wyniki otrzymywałem przy wszystkich uruchomieniach. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 29 Listopada 2015 Autor Udostępnij Opublikowano 29 Listopada 2015 Problem rozwiązany. Trochę włosów wyrwałem bo raz działało a raz nie. Winę zwaliłem na update, bo błąd wystąpił pierwszy raz po jego zainstalowaniu i w changelogu były opisane zmiany co do seedów. Seed jaki mi się ustawiał to 2147483648. A ja jestem idiotą. :) Wszystkie liczby w GM są przechowywane w pamięci jako 32 bitowe. All real numbers are stored as 32bit floating point values A jak cytuje wikipedia: A signed 32-bit integer can have a maximum value of 231 - 1 = 2,147,483,647 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 29 Listopada 2015 Udostępnij Opublikowano 29 Listopada 2015 Wszystkie liczby w GM są przechowywane w pamięci jako 32 bitowe Jak to? Przed chwilą sprawdziłem i mogłem spokojnie działać na liczbach większych od 2^40, zawsze myślałem, że liczby w GM-ie są typu double. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 29 Listopada 2015 Udostępnij Opublikowano 29 Listopada 2015 Też tak myślałem, coś się zmieniło? : o Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 30 Listopada 2015 Autor Udostępnij Opublikowano 30 Listopada 2015 Zmienna zapisywała się jako większa wartość, ale argument dla random_set_seed() nie przyjmuje większych liczb. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 1 Grudnia 2015 Administratorzy Udostępnij Opublikowano 1 Grudnia 2015 A to już można zgłosić jako buga :) 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ę