无重复随机数生成

做作业时候遇到这个问题,感觉这种算法很快捷
一个洗牌的算法。。多线程没做出来然后放弃了

生成1-52之内的不重复随机数,一个数代表了一张牌,循环52次即摸牌完毕。

#include <iostream>
#include <cstdlib>
#include <ctime>


using namespace std;

int main()
{
    string a[5]={"红桃","方片","黑桃","梅花"};
    string b[15]={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
    string c[60]={"0"};
    int k=0;            //总牌数,初始化为0
    srand((int)time(0));

    //初始化牌堆
for(int i=0;i<4;i++)
        for(int j=0;j<13;j++)
        {
            c[k]=a[i]+b[j];
            k++;
        }
    
//循环计数递减,每抽取一个字符串就将其放到字符串组末尾,从下次循环中剔除
for(int i=k;i>=1;i--)
    {
        int temp = rand()%i ;
        cout<<"第"<<i<<"张:"<<c[temp]<<endl;
        swap(c[temp],c[i-1]);
    }
    return 0;
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,343评论 25 709
  • 北京新学道金泉书院 六年级 陈琦翀 童年就像一个闸子, 一打开,无数记忆呈现眼前。 童年如同一片沙滩, 眺望一眼,...
    见字如面六年级阅读 4,381评论 1 6
  • 你对自己有觉察吗?你看见自己的成长动力了吗?什么可以激励你不断努力?什么可以让你挫败,把你击得粉碎?你了解自己吗?...
    graciali阅读 1,794评论 0 0
  • 送你一个男朋友(上) 文/十里sl 1 秦矜刚鬼鬼祟祟的靠近墙根,就看到墙外面一颗脑袋一跳一跳,在墙头忽隐忽现。 ...
    十里sl阅读 3,808评论 0 3
  • 大姐来探我们,返老家时,顺便捎回一封机哥给父亲大人的信,并附上零花钱若干! 我没看到父亲脸上的沧桑,只看到其笑逐颜...
    厚德明礼阅读 4,585评论 4 4