zoukankan      html  css  js  c++  java
  • 经典洗牌算法C语言实现

    这种洗牌方式的算法:

    1:初始化一个长度为54的数组,和54张牌。

    2:从i=1开始到54,每次从剩余的牌堆中随机抽一张牌放到数组的i下标下。

    这样我们可以用一个数组做也可以用两个数组做。

    就和经典的选择排序一样。

    #include<stdio.h>
    #include<time.h>
    #include<stdlib.h>
    #include<string.h>
    #include<vector>
    #include<algorithm>
    #define POKER_NUM 54
    int poker[54];
    void iniPoker()
    {
        for(int i=0;i<POKER_NUM;i++)
        {
            poker[i]=i+1;
        }
    }
    void suffle()
    {
        for(int i=0;i<POKER_NUM;i++)
        {
            int index=rand()%(POKER_NUM-i)+i;         //获取从i~POKER_NUM的一个索引
            std::swap(poker[i],poker[index]);        //交换
        }
    }
    void printPoker()
    {
        for(int i=0;i<POKER_NUM;i++)
        {
            if(i%9==0) printf("
    ");
            printf("%4d",poker[i]);
        }
    }
    int main()
    {
        srand(time(NULL));
        iniPoker();
        printPoker();
        suffle();
        printf("
    -------------------------------------------------------------
    ");
        printPoker();
    }
    




  • 相关阅读:
    用struct定义函数
    三、OCTAVE画图
    二、OCTAVE 移动数据
    SQL复习
    Flink处理迟到的数据
    LeetCode题目学习
    CentOS7安装pycharm
    IntelliJ IDEA 刷题利器 LeetCode 插件
    Redis命令学习
    项目杂记
  • 原文地址:https://www.cnblogs.com/leejuen/p/5547470.html
Copyright © 2011-2022 走看看