Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
kr.martin
Člen
Avatar
kr.martin:19.3.2015 9:36

Prosím o pomoc, chtěl bych v GML napsat kód který by mi vybíral náhodná čísla z množin za určitých podmínek. Popsané to mám v txt souboru který přikládám. Díky předem :-)

http://ulozto.cz/…/priklad-txt

 
Odpovědět
19.3.2015 9:36
Avatar
Lukáš Hornych
Tvůrce
Avatar
Lukáš Hornych:19.3.2015 11:21

Z každé mocniny vybereš náhodné číslo třeba pomocí funkce choose(tvoje čísla), ale aby se neopakovala to nevím jak udělat.

 
Nahoru Odpovědět
19.3.2015 11:21
Avatar
kr.martin
Člen
Avatar
Odpovídá na Lukáš Hornych
kr.martin:19.3.2015 11:45

no choose jsem použil a příkaz do a until s podmínkama aby se čísla neopakovala ale v lepším případě výpočet trval kolem minuty v horším někdy ani neproběhl :-)

Editováno 19.3.2015 11:46
 
Nahoru Odpovědět
19.3.2015 11:45
Avatar
Štěpán Wünsch:19.3.2015 11:47

Jsem amatér, ale asi bych to řešil následujícím způsobem:

1.) Vytvořit pro každou množinu "ds_list"
2.) Pomocí funkce "irandom_range(0, ds_list_size(id) - 1)" získat pořadí vybraného čísla
3.) Vysosat číslo ho přes "ds_list_find_va­lue"
4.) Smazat získané číslo u všech dalších listů s množinami (výsledky se nesmí opakovat)

 
Nahoru Odpovědět
19.3.2015 11:47
Avatar
kr.martin
Člen
Avatar
Odpovídá na Štěpán Wünsch
kr.martin:19.3.2015 11:50

nevím no v toto případě si myslim že je možné že třeba u 13,14 nebo 15 listu nezbude volne cislo

 
Nahoru Odpovědět
19.3.2015 11:50
Avatar
kr.martin
Člen
Avatar
Odpovídá na kr.martin
kr.martin:20.3.2015 10:38

Nemá už nikdo jiný nápad? :P

 
Nahoru Odpovědět
20.3.2015 10:38
Avatar
hanpari
Člen
Avatar
Odpovídá na kr.martin
hanpari:20.3.2015 12:55

Co takhle cislo vybrat a nasledne ho odstranit ze seznamu.pak budes vybirat vzdy jedinecnou hodnotu pomoci choose

 
Nahoru Odpovědět
20.3.2015 12:55
Avatar
kr.martin
Člen
Avatar
kr.martin:20.3.2015 13:37

No takhle by to fungovalo kdyby ve všech 15 ti seznamech bylo patnáct čísel od 1 do 15 . jelikož je v seznamech různý počet čísel a různé hodnoty tak se stane že třeba v posledních seznamech když budu od začátku nechávat mazat vybraná čísla nezbude už žádné číslo

 
Nahoru Odpovědět
20.3.2015 13:37
Avatar
coells
Tvůrce
Avatar
Odpovídá na kr.martin
coells:20.3.2015 13:53
for i in 1:15
  množina M(i) = seznam všech hodnot
  dokud M(i) nemá potřebnou velikost
    vyhoď náhodný prvek z M(i)

ezpz (c) coells

 
Nahoru Odpovědět
20.3.2015 13:53
Avatar
kr.martin
Člen
Avatar
Odpovídá na coells
kr.martin:20.3.2015 16:35

Vypadá to zajímavě ale trošku jelen jsem z toho kdyby to šlo trosku podrobněji prosím :o

 
Nahoru Odpovědět
20.3.2015 16:35
Avatar
hanpari
Člen
Avatar
Odpovídá na kr.martin
hanpari:20.3.2015 16:58

To je pseudokod, universální zápis, který si musíš přepsat do GM skriptu

1/ 1:15 znamená v množinách od 1 do 15, typicky for
2/ Vybereš množinu n
3/ Dokud, typicky while, je velikost dané množiny větší než požadovaná,
4/ odstraňuješ náhodné prvky z množiny. Popřípadě můžeš množinu napřed promíchat v bodě 2, aby byla náhodná. A pak můžeš vyhazovat každý první nebo poslední prvek, dokud trvá podmínka ve while. Nevím, co je v GM výhodnější, pokud je v tom nějaký rozdíl.

 
Nahoru Odpovědět
20.3.2015 16:58
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 11 zpráv z 11.