c++ STL 随机打乱数组 random_shuffle()

c++ STL 随机打乱数组 random_shuffle()

使用方法:

头文件:algorithm
使用:
要打乱的数组(容器)的起始地址和结束地址:random_shuffle( begin , end)
复杂度:O(n)
将数组元素打乱,但每次都是同一种打乱顺序(伪打乱),若要每次都打乱的不同则需更改随机种子,看代码:

#include<algorithm>
#include<cstdio>
#include<ctime>
using namespace std;
int Rand(int i){return rand()%i;}
int main()
{

    //srand( unsigned (time(0)) );
    int a[10]={1,2,3,4,5,6,7,8,9,10};
    int b[10]={1,2,3,4,5,6,7,8,9,10};
    int c[10]={1,2,3,4,5,6,7,8,9,10};
    random_shuffle(a,a+10);//将数组元素打乱,但每次都是同一种打乱顺序
    printf("打乱后的a数组顺序(不加随机种子):");
    for(int i=0;i<10;i++)
        printf("%d ",a[i]);
    printf("\n");


    /*更改随机种子*/srand ( unsigned ( time(0) ) );
    printf("打乱后的b数组顺序(加随机种子)(三参数):");
    random_shuffle(b,b+10,Rand);
    //或者原先的写法均可 random_shuffle(b,b+10);

    for(int i=0; i<10; i++)
        printf("%d ",b[i]);
    printf("\n");


    random_shuffle(c,c+10);
    printf("打乱后的c数组顺序(加随机种子)(两参数):");
    for(int i=0; i<10; i++)
        printf("%d ",c[i]);
    return 0;
}

运行结果:
第一次:

第二次:
在这里插入图片描述
第三次:
在这里插入图片描述


版权声明:本文为Aajbelieve原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。