1. 给N张扑克牌和一个随机函数,设计一个洗牌算法 [CC150]

关键点:如何保证每张牌等概率地出现在每个位置

 伪码如下

for i in 1…n:
    randomly select a card j from [1,i]
    swap card i with card j

C++实现

 1 void shuffle(vector<int> cards, int n) {
 2     if (cards.empty()) {
 3         return;
 4     }
 5     srand(time(0));
 6     for (int i = 1; i <= n; i++) {
 7         int j = 1 + rand() % i;        
 8         swap(cards[i - 1], cards[j - 1]);
 9     }
10 }
shuffle

相关文章:

  • 2021-07-13
  • 2021-09-28
  • 2022-12-23
  • 2021-12-09
  • 2021-10-09
  • 2021-06-25
  • 2021-05-29
猜你喜欢
  • 2022-12-23
  • 2021-04-21
  • 2022-12-23
  • 2021-05-09
  • 2021-07-10
相关资源
相似解决方案