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;
}

运行结果:
第一次:

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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值