Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Szansa na perk.


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
7 odpowiedzi w tym temacie

#1 mlekovita

    Zaawansowany

  • Użytkownik

Reputacja: 7
Nowy

  • Postów:149
  • Imię:Dawid
Offline

Napisano 23.05.2022 13:15

Siemka mam pytanie co do random_num
Jak dam zalozmy random_num(1, 100) <= costam to wtedy plugin zatrzyma sie wtedy kiedy bedzie pasowac pierwsza wartosc z tablicy costam. a co jeżeli mam tablice i w niej powtarzaja sie takie wartosci, jakies pomysly jakbym mogl to rozwiazac?


Użytkownik mlekovita edytował ten post 23.05.2022 13:16

  • +
  • -
  • 0

#2 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 23.05.2022 17:39

Szerszy kontekst podaj, bo ciężko wywnioskować coś z tego....

 

jakie wartości, jak to używane będzie w ogole? To 'random_num(1, 100) <= costam' porównanie da Ci tylko info czy wylosowana liczba była mniejsza bądź równa od costam, a gdzie tu tablica? nie wiem...


  • +
  • -
  • 0

#3 mlekovita

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 7
Nowy

  • Postów:149
  • Imię:Dawid
Offline

Napisano 23.05.2022 18:19

Załózmy ze mam sobie codmoda/csgo moda lub cokolwiek co mialoby drop perku/skina za jakas szanse i jakas tam tablice z szansami odpowiadajace id skinom/perkom. Jezeli szansa = {1, 1, 1, 1, 2, 5, 10, .. itd} to

new los = random_num(1, 100)
for(new i=0; i<sizeof(szansa); i++)
if los <= szansa[i] then
perkid = i;
break;
end

w tym przypadku jezeli wylosuje 1 to za kazdym razem z tablicy szansy zostanie pobrana komórka 0 zamiast 0, 1, 2, lub 3. 

 


Użytkownik mlekovita edytował ten post 23.05.2022 18:20

  • +
  • -
  • 0

#4 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 23.05.2022 20:08

Czyli szansa definiuje szanse na wybranie konkretnego indeksu z tablicy?

Jeśli tak to kumulacyjne podejście jest tym czego szukasz: https://stackoverflow.com/a/1761646

 

 

Prostsze, ale nieoptymalne rozwiązanie to stworzenie tablicy liczb (indeksów). Do tablicy dodajesz X razy dany indeks, gdzie X to szansa na jego wylosowanie. Wtedy w tablicy będziesz miał (dla powyzszego przypadku):

[0,1,2,3,4,4,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6] i wtedy z tego losujesz jedną liczbę


  • +
  • -
  • 0

#5 mlekovita

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 7
Nowy

  • Postów:149
  • Imię:Dawid
Offline

Napisano 23.05.2022 20:15

Nie wiem czy dobrze to rozumiem ale nadal zostaje jeden problem
Gdy random wyniesie 1 to nie wybierze nadal pierwszego z gory indeksu? 
{1,1,1,1,2,3,3,4,5,10,20} Powinno wylosowac( w przypadku random 1) jeden z czterech pierwszych indeksow, lub jeden z dwoch (5,6) indeksów w przypadku gdy random wyniesie 3?


Użytkownik mlekovita edytował ten post 23.05.2022 20:16

  • +
  • -
  • 0

#6 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 23.05.2022 21:43

Ale Ty z randoma nie losujesz indeksu, sumujesz wszystkie szanse i losujesz z prezdziału [0, suma) 

i idziesz po kolei w tablicy i sumujesz te liczby, jeśli obecna suma przekroczy wylosowaną liczbę to znaczy, że wylosowaną liczbą jest (obecny index - 1).

 

 


  • +
  • -
  • 0

#7 mlekovita

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 7
Nowy

  • Postów:149
  • Imię:Dawid
Offline

Napisano 24.05.2022 08:49

No dobra tam jest opisane dla różnych wag, ale co jeżeli dwie te same "wagi" maja różne id?


  • +
  • -
  • 0

#8 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 27.05.2022 17:54

Bedzie dzialac. Zaprogramuj i przetestuj ;)


  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych