Diskuze: Proházení čísel v polích (arrays)
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 10 zpráv z 10.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.


Ahoj,
něco jsem zkusil a takto to dopadlo:
package itn.forum;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.ThreadLocalRandom;
class Data {
private List<Integer> lst;
private static int getRandInt(int n) { return ThreadLocalRandom.current().nextInt(0, n); }
public void mix() {
for(int i = 0, s = lst.size(); i < s; i ++) {
lst.add(lst.remove(getRandInt(s)));
}
}
public Data(Integer[] array) { lst = new LinkedList<>(Arrays.asList(array)); }
@Override
public String toString() {
String s = "";
for(int i = 0; i < lst.size(); i ++) {
s += (i != 0?", ":"") + "{" + lst.get(i) + "}";
}
return "{" + s + "}\n";
}
}
public class TopX {
public static void main(String[] args) {
Data data = new Data(new Integer[] {0, 1, 2, 3}); //obsahuje testovane hodnoty
System.out.println(data);
data.mix();
System.out.println(data);
}
}
Děkuji moc,
funguje to dobře, jen se obávám, že nejsem dost dobrý programátor na to,
abych dané hodnoty dokázal dostat do jednoho pole, se kterým bych potom
nadále pracovat.
řekněme, že budu mít pole o 3 místech, kdy na 1. místě bude 1 na 2. 2 a na 3. 3.. tedy
array[0]=1
array[1]=2
array[2]=3
Teď nějaká funkci, kterou projde, která bude mít za úkol náhodně
proházet pořadí.
A vyhodí jiné pole, které když vypíši bude mít místo původního
výsledku (1,2,3) například výsledek (1,3,2)
Tento poskytnutý program transformuje pole následně do "string" podoby.. a já nejsem schopen to z toho dostat..
A nebo se nemusí využívat polí vůbec.. Zkrátka potřebuji, abych dokázal vypsat určitý počet náhodně jdoucích čísel, která se ale nebudou opakovat.. Napadlo mě řešení zkusit to přes změnu pořadí v poli a lámal jsem si s tím hlavu, bohužel to nedopadlo, proto jsem se šel zeptat sem..
Omlouvám se, ale nedokážu si s tím poradit, ale opravdu děkuji za poskytnuté řešení, ještě zkusím to nějak vytvořit ..
Ahoj, celý tvůj problém lze vyřešit na jeden řádek 
ThreadLocalRandom.current().ints(0, 10).distinct().limit(6).forEach(System.out::println);
// ThreadLocalRandom.current().ints(0, 10) --> generátor náhodných čísel v polootevřeném intervalu <0, 10)
// distinct() --> zajistí unikátní čísla
// limit(6) --> počet vygenerovaných unikátních čísel
// forEach --> nakonec se to vypíše do konzole
Tak by si ho mohol poslať a uzavrieť toto vlákno 
Promiň za pauzu.
Za mě to vypadá takto:
package itn.forum;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.concurrent.ThreadLocalRandom;
class Data {
private List<Integer> lst;
private static int getRandInt(int s) { return ThreadLocalRandom.current().nextInt(0, s); }
private void exx() {
int index = getRandInt(lst.size());
int index2 = getRandInt(lst.size());
Integer temp = lst.get(index);
lst.set(index, lst.get(index2));
lst.set(index2, temp);
}
public void mix() {
for(int i = 0; i < lst.size(); i ++) {
exx();
}
}
public Data() { lst = new ArrayList<>(); }
public void add(Integer value) { lst.add(value); }
@Override
public String toString() {
String s = "";
for(int i = 0; i < lst.size(); i ++) {
s += (i != 0?", ":"") + "{" + lst.get(i) + "}";
}
return "{" + s + "}\n";
}
}
public class TopX {
public static void main(String[] args) {
Data data = new Data();
Scanner sc = new Scanner(System.in);
for(;;) {
System.out.println("Zadej číslo, enter to quit: ");
String temp = sc.nextLine();
if(System.lineSeparator().startsWith(temp)) { break; }
data.add(Integer.parseInt(temp));
}
sc.reset();
System.out.println(data);
System.out.println("Mixuji...\n");
data.mix();
System.out.println(data);
}
}
Ahoj.
Tak jsem ještě vylepšil efektivitu mixování:
package itn.forum;
import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.ThreadLocalRandom;
class Data {
private List<Integer> lst;
private static int getRandInt(int s) { return ThreadLocalRandom.current().nextInt(0, s); }
public void mix() {
for(int i = 0, s = lst.size(); i < s; i ++) {
Collections.swap(lst, getRandInt(s), getRandInt(s));
}
}
public Data() { lst = new LinkedList<>(); }
public Data(Integer[] arr) { this(); lst.addAll(Arrays.asList(arr)); }
public void add(Integer value) { lst.add(value); }
@Override
public String toString() {
String s = "";
for(int i = 0; i < lst.size(); i ++) {
s += (i != 0?", ":"") + "{" + lst.get(i) + "}";
}
return "{" + s + "}\n";
}
}
public class TopX {
public static void main(String[] args) {
// Data data = new Data();
Data data = new Data(new Integer[] {10, 20, 30, 40, 50});
/*
Scanner sc = new Scanner(System.in);
for(;;) {
System.out.println("Zadej číslo, enter to quit: ");
String temp = sc.nextLine();
if(System.lineSeparator().startsWith(temp)) { break; }
data.add(Integer.parseInt(temp));
}
sc.reset();
*/
System.out.println(data);
System.out.println("Mixuji...\n");
data.mix();
System.out.println(data);
}
}
Jirka
Zobrazeno 10 zpráv z 10.