Looking for random Answers? Try Ask4KnowledgeBase
Looking for random Keywords? Try Ask4Keywords

randomKomma igång med slumpmässigt


Anmärkningar

Det här avsnittet ger en översikt över vad slumpmässigt är, och varför en utvecklare kanske vill använda den.

Det bör också nämna eventuella stora ämnen slumpmässigt och länka till relaterade ämnen. Eftersom dokumentationen för slumpmässigt är ny kan du behöva skapa initialversioner av relaterade ämnen.

Fisher-Yates blandar

Även känd som Knuth-blandningen och Durstenfeld-Fisher-Yates-blandningen. Denna blandning tar en rad n element och blandar den. Algoritmen är verkligen slumpmässig eftersom varje permutation av matrisen är lika trolig efter att ha blandat.

På java:

public static void shuffle(E[] deck) {

    //From the end, swap each card with a random card from the unswapped portion.
    for(int i = deck.length - 1; i > 0; i--)
    {
        //Pick an element from [0,i], inclusive.
        int chosenCard = (int) (Math.random() * (i + 1));

        E temp = deck[i];
        deck[i] = deck[chosenCard];
        deck[chosenCard] = temp;
    }
}
 

Observera: det är nödvändigt att ersättningselementet kommer från [0, i] inklusive och inte [0, i) exklusivt: Annars är permutationer i matrisen där element förblir på plats omöjliga, vilket inte är riktigt slumpmässigt.

Förutsatt att antagandet av slumpmässiga siffror tar O (1) att generera, fungerar algoritmen på plats och tar O (n) tid och utrymme. En matris blandad på detta sätt kan användas för att hämta icke upprepande element i O (1) amorterad tid per element.

E[] deck;
int drawIndex;

//Elements are taken from an index that advances.
public E drawUniqueCard()
{
    //Once all cards have been drawn, reshuffle the deck and draw from the top.
    if(drawIndex == deck.length)
    {
        shuffle(deck);
        drawIndex = 0;
    }
    //Pull the next card off the deck.
    return deck[drawIndex++];
}
 

Installation eller installation

Detaljerade instruktioner för att få slumpmässigt konfigurerat eller installerat.