1. 程式人生 > >轉:模擬洗牌(撲克)程式

轉:模擬洗牌(撲克)程式

// Illustrates : Shuffle algorithm, srand, rand.

// Improvements: Use classes for Card and Deck.

// Author      : Fred Swartz 2003-08-24, shuffle correction 2007-01-18

//               Placed in the public domain.

#include <iostream>

#include <cstdlib>   // for srand and rand

#include <ctime>     // for time

using namespace std;

int main() {

    int card[52];    // array of cards;

    int n;           // number of cards to deal

    srand(time(0));  // initialize seed "randomly"

    for (int i=0; i<52; i++) {

        card[i] = i;  // fill the array in order

    }

    while (cin >> n) {   

        //--- Shuffle elements by randomly exchanging each with one other.

        for (int i=0; i<(52-1); i++) {

            int r = i + (rand() % (52-i)); // Random remaining position.

            int temp = card[i]; card[i] = card[r]; card[r] = temp;

        }

        //--- Print first n cards as ints.

        for (int c=0; c<n; c++) {

            cout << card[c] << " ";  // Just print number

        }

        cout << endl;

    }

   return 0;

}

posted on 2012-12-26 15:59 胡滿超 閱讀(356) 評論(0)  編輯 收藏 引用 所屬分類: 演算法轉載