C++将数组的元素顺序随机打乱
参考:
https://blog.csdn.net/cordova/article/details/52884399
https://zhidao.baidu.com/question/1604258083773493627.html
自己的测试代码
int array1[] = {,,,,,,,,};
int array2[] = { };
for (int i=;i>;i--)
{
int pos = rand() % i;
printf("%d ", pos);
array2[i] = array1[pos];
for (int j = pos;j<;j++)
{
array1[j] = array1[j+];
}
}
array2[] = array1[];
printf("\n");
for (int i = ; i< ; i++)
{
printf("%d ", array2[i]);
}
打乱之后,恢复:
#include<iostream>
using namespace std;
int main()
{
char str[]="abcdefg123456789";
char key[]="";
char temp;
/*利用秘钥乱序*/
for(int j = ; j < ; j++) //对于key的前两位
for(int i = ;(i+(key[j]-''))<=; i++)
{
if(i%!=)//奇数位与其后面第key[j]位交换
{
temp = str[i+(key[j]-'')];
str[i+(key[j]-'')] = str[i];
str[i] = temp;
}
}
for(int i = ; i < ; i++)
cout<<str[i]<<" ";
cout<<endl;
for(int j = ; j < ; j++) //对于key的后两位
for(int i = ;(i+(key[j]-''))<=; i++)
{
if(i%==)//偶数位与其后面第key[j]位交换
{
temp = str[i+(key[j]-'')];
str[i+(key[j]-'')] = str[i];
str[i] = temp;
}
}
for(int i = ; i < ; i++)
cout<<str[i]<<" ";
cout<<endl; /*利用秘钥复原*/
for(int j = ; j >= ; j--) //对于key的后两位
for(int i = ;(i-(key[j]-''))>=; i--)
{
if(i%!=)//奇数位与其前面第key[j]位交换
{
temp = str[i-(key[j]-'')];
str[i-(key[j]-'')] = str[i];
str[i] = temp;
}
}
for(int i = ; i < ; i++)
cout<<str[i]<<" ";
cout<<endl; for(int j = ; j >= ; j--) //对于key的前两位
for(int i = ;(i-(key[j]-''))>=; i--)
{
if(i%!=)//奇数位与其前面第key[j]位交换
{
temp = str[i-(key[j]-'')];
str[i-(key[j]-'')] = str[i];
str[i] = temp;
}
}
for(int i = ; i < ; i++)
cout<<str[i]<<" ";
system("pause");
return ;
}
C++将数组的元素顺序随机打乱的更多相关文章
- N个整数(数的大小为0-255)的序列,把它们加密为K个整数(数的大小为0-255).再将K个整数顺序随机打乱,使得可以从这乱序的K个整数中解码出原序列。设计加密解密算法,且要求K<=15*N.
N个整数(数的大小为0-255)的序列,把它们加密为K个整数(数的大小为0-255).再将K个整数顺序随机打乱,使得可以从这乱序的K个整数中解码出原序列.设计加密解密算法,且要求K<=15*N. ...
- MATLAB下数组随机打乱顺序的方法
一:问题 有两个规模相同的数组,两个数组相同位置的元素一一对应,现在要将两数组的元素同时打乱顺序,并且乱序后的两数组对应位置元素要保持乱序前的对应关系. 二:方法 采用randperm()函数,产生 ...
- php保留键随机打乱数组顺序
最近遇到一个需求,把一个数组随机打乱顺序,我们可以用php的shuffle函数,但是这个函数会把数组的键清空建立新的键,那么我们若想保留键只需要利用shuffle函数再做一下处理就可以了.可以自定义一 ...
- ShuffleElements(随机打乱数组中的元素)
给定一个数组,随机打乱数组中的元素,题意很简单直接上代码: package Array; import java.util.Arrays; import java.util.Collections; ...
- C#随机打乱列表List元素顺序
C#随机打乱列表List项目顺序 以下泛型扩展方法,实现了随机打乱泛型列表List<T>的功能 public static List<t> DisorderItems<t ...
- Python代码阅读(第10篇):随机打乱列表元素
本篇阅读的代码实现了随机打乱列表元素的功能,将原有列表乱序排列,并返回一个新的列表(不改变原有列表的顺序). 本篇阅读的代码片段来自于30-seconds-of-python. shuffle fro ...
- js颠倒数组元素顺序reverse()
颠倒数组元素顺序reverse() reverse() 方法用于颠倒数组中元素的顺序. 语法: arrayObject.reverse() 注意:该方法会改变原来的数组,而不会创建新的数组. 定义数组 ...
- 使用Arraylist将数组中元素随机均等乱序分为N个子数组
使用Arraylist将数组中元素随机均等乱序分为N个子数组 觉得有用的话,欢迎一起讨论相互学习~Follow Me 为了将数组中的元素 随机地 ,均等地, 不重复地 ,划分到N个子数组中 使用Arr ...
- js 随机打乱数组
假如有一个数组: var arr1=['a','b','c','d','e','f','g']; 需要将它进行随机打乱,网上好多都是用: arr1.sort(function(){ return 0. ...
随机推荐
- 去掉Tomcat的管理页面
一.去掉Tomcat的管理页面 一.方法一:如果要去掉默认该界面,可以重命名tomcat目录下的ROOT,并新建空文件夹命名为ROOT 1.刚打开tomcat,默认访问的是tomcat管理页面,比如X ...
- java String[] 初始化
String[] 初始化 String[] s1 = {"hello", "world"}; String[] s2 = new String[]{" ...
- SLAM领域牛人、牛实验室、牛研究成果梳理
点击公众号"计算机视觉life"关注,置顶星标更快接收消息! 本文阅读时间约5分钟 对于小白来说,初入一个领域时最应该了解的当然是这个领域的研究现状啦.只有知道这个领域大家现在正在 ...
- cocos2dx 实现文字的一键复制功能(IOS、Android)
1.IOS篇(用OC和C++混编) 头文件声明: public static void copy(std::string str); 实现如下: void copy(std::string str) ...
- laravel----------如何优化laravel框架
1.关闭debug (打开.env文件,把debug设置为false.) 2.缓存路由和配置(清除:php artisan config:clear php artisan route:clear ...
- Linux LVS_NAT DR
一.lvs-nat LVS是Linux Virtual Server的简写,意即Linux虚拟服务器.是由章文嵩博士开发的一个在内核层面的负载均衡调度器. lvs是在netfilter的INPU ...
- 什么是软件开发工具包(SDK)
开发一个软件,需要经过编辑.编译.调试.运行几个过程. 编辑:使用编程语言编写程序代码的过程. 编译:如上一节所讲,就是将编写的程序进行翻译. 调试:程序不可能一次性编写成功,编写过程中难免会出现语法 ...
- jw player 配置参数
Loading the player … //player所在div //具体配置参数 jwplayer(“container”).setup({//通过js调用播放器并安装到指定容器(contain ...
- oracle ora-12514解决办法
原来配置好的数据库监听用plsql登陆报错ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 网上说的改listener.ora 添加如下配置 SID_LIST_LISTENER = ...
- keepalived + lvs
Keepalived原理 Keepalived原理 keepalived也是模块化设计,不同模块复杂不同的功能,下面是keepalived的组件 core check vrrp libipfwc li ...