美文网首页
洗牌算法

洗牌算法

作者: 远o_O | 来源:发表于2017-05-07 15:46 被阅读36次

概述###

  • 洗牌算法(可以归类到随即算法中),顾名思义,就是只利用一次循环等概率的取到不同的元素(牌)。

描述###

  • 如果元素存在于数组中,即可将每次 random 到的元素 与 最后一个元素进行交换,然后 count--,即可。这相当于把这个元素删除,代码如下:
#include <iostream>
#include <ctime> 
using namespace std;

const int maxn = 10;
int a[maxn];

int randomInt(int a) 
{
    return rand()%a;
}

void swapTwoElement(int*x,int*y) 
{
     int temp;
     temp=*x;
     *x=*y;
     *y=temp;
}

int main()
{
    int count = sizeof(a)/sizeof(int);
    int count_b = count;
    /**
     *srand函数是随机数发生器的初始化函数。原型:void srand(unsigned int seed);
     *srand和rand()配合使用产生伪随机数序列。
     */
    srand((unsigned)time(NULL));
    //初始化数组 
    for (int i = 0; i < count; ++i) 
    { 
        a[i] = i; 
    }
    //随即的输出数组中的每一个数字 
    for (int i = 0; i < count_b; ++i) 
    {
        int random = randomInt(count);
        cout<<a[random]<<" ";
        swapTwoElement(&a[random],&a[count-1]);
        count--;
    }
    system("pause");
    return 0;
}

相关文章

  • Golang洗牌算法,抢红包算法

    本文为转载,原文:Golang洗牌算法,抢红包算法 1. 洗牌算法 洗牌算法,即将原来的顺序打乱,组成新的随机排序...

  • 洗牌算法

    一次偶然的机会,需要我生成一个长度为len的数组。数组的内容是[0-len)。这并不难,分分钟生成这样一个数组: ...

  • 洗牌算法

    在工作中需要重写一个洗牌算法,根据网络中的资料分析了一下,已经有总结得很好的了,就直接总结转载了一下。 洗牌算法大...

  • 洗牌算法

    洗牌算法是一个比较形象的术语,本质上让一个数组内的元素随机排列。

  • 洗牌算法

    问题 实现一个最简单的洗牌算法。 分析 很多人第一次都可能会很迷惑,其实只要理解好了这个题目,实现起来相信并不难。...

  • 洗牌算法

    概述### 洗牌算法(可以归类到随即算法中),顾名思义,就是只利用一次循环等概率的取到不同的元素(牌)。 描述##...

  • 洗牌算法

    打乱一个序列 暴力方法 每次生成一个随机数,然后将对应下标的原序列数添加到新数组中。同时应该有一个memo用来记录...

  • 洗牌算法

    第一次接触洗牌算法是在一次面试上,面试官要求我写出一个算法将一个1~100的有序数组打乱,不考虑性能,那次我想了许...

  • 洗牌算法

    随机打乱一个数组的顺序。场景:验证码之类。要求生成n位不重复的数字组合(0

  • 洗牌算法

    Source Code Usage

网友评论

      本文标题:洗牌算法

      本文链接:https://www.haomeiwen.com/subject/bawutxtx.html