bloggerads

2013年10月31日 星期四

C++: vector Shuffle(洗牌) 函數

C++提供隨機打亂vector的函數, random_shuffle()。若想要每次第一次都是不同的亂法,可以引入一個function pointer, 而這個function限定一個輸入和一個輸出引數, type要和iterator一樣, 且輸出值不能為負數或大於輸入引數

#include <stdio.h>
#include <vector>
#include <algorithm> //random_shuffle
#include <time.h>

int gen(int i) {return rand()%i; }

int main()
{ 
  srand(time(0));
  std::vector<int> v;
  v.push_back(1);
  v.push_back(2);
  v.push_back(3);
  v.push_back(4);

  random_shuffle(v.begin(), v.end(), gen);

  for (unsigned int x=0; x<v.size(); x++)
    printf("%d\n", v[x]);
  return 0;         
}

沒有留言:

張貼留言