close

Shuffle a given array

Given an array, write a program to generate a random permutation of array elements. This question is also asked as “shuffle a deck of cards” or “randomize a given array”.


Fisher–Yates shuffle Algorithm
import java.util.*;

public class cracking {
    public static void shuffle(int[] cards) {
        Random rand = new Random();
        for (int i=cards.length-1; i>0; i--) {
            int pick = rand.nextInt(i+1);
            int tmp = cards[i];
            cards[i] = cards[pick];
            cards[pick] = tmp;
        }
    }

    public static void main(String[] argv) {
        int deck[] = new int[52];
        for (int i=0; i<deck.length; i++) {
            deck[i] = i + 1;
        }
        shuffle(deck);
    }
}

import random

def shuffle(ary):
    a=len(ary)
    b=a-1
    for d in range(b,0,-1):
      e=random.randint(0,d)
      if e == d:
            continue
      ary[d],ary[e]=ary[e],ary[d]
    return ary

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 g0d2 的頭像
    g0d2

    kazi1@的部落格

    g0d2 發表在 痞客邦 留言(0) 人氣()