Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Problem z losowaniem


Miecraft Maniak

Rekomendowane odpowiedzi

Opublikowano

Witam, mam problem, otóż mam listę i chce odczytać z jej wartości szanse:

	   for (Item is : items) {  
	    if (is.getChance() >= random.nextDouble() * 100.0) {    
	         return ret;    
	  }
	}
	

I problem w tym, ze mam np ustawione szanse 40%, 50%,70%. I najczęściej to zwraca mi właśnie item z 40% szansa, a przecież item 2 i 3 maja ją większą. Jak zrobić aby zwracalo najczęściej item z największą szansą a najrzadziej z najmniejszą?

Opublikowano

hehe te konstruktywne odpowiedzi sa nadwyraz pomocne ;) ,

masz se tablice iterujesz ja od 0 do x

w kazdej tej sprawdzasz czy szansa >= c

i zwracasz pierwszy traf

taa ale

if (is.getChance() >= random.nextDouble() * 100.0)    gdy:

is.getChance() == 40 to szansa wcale nie oznacza 40% :l tylko 60 bo masz 60% szansy na to ze wypadnie wieksza badz rowna wartosc od 40

dodatkowo za kazdym razem pobierasz nowego random.nextDouble() doubla wiec za kazdym razem liczy go na nowo :l , czyli losujesz szanse na nowo i zwracasz pierwszy traf :l a wiec moze sie zdarzyć tak ze nic nie wylosujesz , nawet jesli cos powinienes ,

jedyny plus ze ta lista jest posortowana bo powinna byc

Opublikowano

Zauważ że kiedy zapętlasz tą liste i trafisz na element dla którego warunek w if'ie bedzie spelniony (w tym przypadku to item który ma 40% - pewnie jest pierwszy na liscie) to po uzyciu slowa return konczy sie dzialanie funkcji i reszty Itemow nawet nie próbuje losować.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...