Tilfældige intervaller og blanding
Begrænsede tilfældige tal og blanding af collections
Tilfældige intervaller og blanding er en gratis Java Academy-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Java Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Java Academy-kurset indeholder 4 lektioner i alt.
Intervaller og blanding
Virkelige programmer vil sjældent have værdier fra 0 til bound-1. Denne lektion gennemgår vilkårlige intervaller, tilfældig blanding af samlinger og valg af tilfældige elementer.
En formel til et brugerdefineret interval
Hvis du vil generere et heltal fra min til max inklusive, skal du bruge min + rng.nextInt(max - min + 1).
import java.util.Random;
public class Main {
public static void main(String[] args) {
Random rng = new Random();
int min = 10, max = 20;
int value = min + rng.nextInt(max - min + 1);
System.out.println("10 to 20: " + value);
}
}nextInt med startpunkt og grænse
Moderne Java lader dig kalde nextInt(origin, bound) direkte: startpunktet er inklusivt, og grænsen er eksklusiv. Det undgår den manuelle formel.
import java.util.Random;
public class Main {
public static void main(String[] args) {
Random rng = new Random();
int value = rng.nextInt(10, 21);
System.out.println("10 to 20: " + value);
}
}Tilfældige double-værdier i et interval
Hvis du vil have en double fra lo til hi, skal du bruge lo + rng.nextDouble() * (hi - lo).
import java.util.Random;
public class Main {
public static void main(String[] args) {
Random rng = new Random();
double lo = 5.0, hi = 7.5;
double value = lo + rng.nextDouble() * (hi - lo);
System.out.println(value);
}
}Blanding af en liste
Collections.shuffle(list) omarrangerer en List tilfældigt direkte. Det er velegnet til kortspil og quizzer med tilfældig rækkefølge.
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> deck = new ArrayList<>(List.of(1, 2, 3, 4, 5));
Collections.shuffle(deck);
System.out.println(deck);
}
}Reproducerbar blanding
Giv en Random med en startværdi som det andet argument for at få en deterministisk blanding: Collections.shuffle(list, new Random(seed)).
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class Main {
public static void main(String[] args) {
List<Integer> deck = new ArrayList<>(List.of(1, 2, 3, 4, 5));
Collections.shuffle(deck, new Random(99));
System.out.println(deck);
}
}Blanding kræver en ændrbar liste
List.of(...) opretter en uforanderlig liste. Hvis du blander den, kastes UnsupportedOperationException. Pak den først ind i new ArrayList<>(...).
Valg af et tilfældigt element
Vælg et tilfældigt element ved at generere et tilfældigt indeks og bruge get.
import java.util.List;
import java.util.Random;
public class Main {
public static void main(String[] args) {
List<String> colors = List.of("red", "green", "blue");
Random rng = new Random();
String pick = colors.get(rng.nextInt(colors.size()));
System.out.println("Chosen: " + pick);
}
}Blanding af et array
Arrays har ingen indbygget metode til blanding. Den klassiske tilgang er Fisher-Yates-algoritmen: Byt hvert element med et tilfældigt tidligere indeks eller dets eget indeks.
import java.util.Arrays;
import java.util.Random;
public class Main {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5};
Random rng = new Random(3);
for (int i = arr.length - 1; i > 0; i--) {
int j = rng.nextInt(i + 1);
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
System.out.println(Arrays.toString(arr));
}
}Tilfældig udvælgelse
Hvis du vil udvælge flere forskellige elementer, kan du blande en kopi og tage de første få eller bruge et Set til at holde styr på allerede valgte indekser. At blande og derefter tage et udsnit er enklest for små lister.
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> pool = new ArrayList<>(List.of(1, 2, 3, 4, 5, 6, 7, 8));
Collections.shuffle(pool);
List<Integer> sample = pool.subList(0, 3);
System.out.println("Sample: " + sample);
}
}Praktiske bemærkninger
Bland, når du har brug for en komplet tilfældig omarrangering, og brug en formel til et brugerdefineret interval, når du har brug for begrænsede værdier. Husk altid forskellen på én, når en øvre grænse skal være inklusiv.
Hurtig kontrol
Test din forståelse af intervaller og blanding.
Opsamling
Du har lært om intervaller og blanding.
- Brug
min + nextInt(max - min + 1)ellernextInt(origin, bound)til intervaller. Collections.shuffleomarrangerer en ændrbar liste direkte.- Brug en startværdi til blandingen for at gøre den reproducerbar.
- Vælg tilfældige elementer via et tilfældigt indeks.
Lær Java med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 104
- Lektioner
- 374
Ofte stillede spørgsmål
Er lektionen “Tilfældige intervaller og blanding” gratis?
Ja — hele teksten til “Tilfældige intervaller og blanding” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Java Academy-kurset, skal du opgradere til CoddyKit PRO. Java Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Tilfældige intervaller og blanding”?
Begrænsede tilfældige tal og blanding af collections Du øver dig i Java Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Java Academy?
Der kræves ingen tidligere erfaring. Java Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.
Hvor lang tid tager lektionen “Tilfældige intervaller og blanding”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Java Academy-lektion?
Ja. Alle Java Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Math-klassen
- Generering af tilfældige tal
- Tilfældige intervaller og blanding
- Afrunding og grænser med Math