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. ...
随机推荐
- javaweb(1)之tomcat使用
安装 1.点击下载. 2.解压到一个目录. 3.进入解压后的 bin 目录,双击该文件夹下的 startup.bat 即可运行. 4.若运行成功,会有一个窗口悬停如下: 访问地址: localhost ...
- vue2Leaflet使用 Vue2Leaflet-master 的demo
首先下载该demo 地址:https://github.com/KoRiGaN/Vue2Leaflet 下载后可以运行里面的例子,在examples文件夹内,该文件夹本身就是一个完整的项目 然后cmd ...
- windows----------如何修改windows服务器远程端口
远程连接并登录到 Windows 实例. 选择开始 > 运行,输入 regedit 打开注册表编辑器. 查找 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSe ...
- Go 初体验 - 令人惊叹的语法 - defer.2 - 如何提前执行?
上一文中讲到 defer 会在宿主函数 return 之前调用,那么我们就是想在宿主函数执行到中间调用,怎么办呢? 1. 改变宿主函数逻辑,分成多个函数,需要的那个函数里 defer . 2. 使用匿 ...
- IP2——IP地址和子网划分学习笔记之《子网掩码详解》
2018-05-04 16:21:21 在学习掌握了前面的<进制计数><IP地址详解>这两部分知识后,要学习子网划分,首先就要必须知道子网掩码,只有掌握了子网掩码这部分内容 ...
- Python实现链表
1.1实现单向链表 #链表结构分成2部分 head,tail #('a',('b',('c',none))) #迭代时候 Head is a ;;;; tail is ('b',('c',none)) ...
- pageresponse.min.js自动缩放页面改写
/* * 名称 :移动端响应式框架 * 作者 :白树 http://peunzhang.cnblogs.com * 版本 :v2.1 * 日期 :2015.10.13 * 兼容 :ios 5+.and ...
- mysql的一些指令
说起来mysql,mysql其实是特别简单操作的数据库.它有一下几方面的特点,亦或者是说优点,1,支持多语言:2.移植性比较好:3,我觉得最重要的一点就是它是开源的,因为开源,所以使用广泛,4.效率比 ...
- [转载]get、post异同
1. get是从服务器上获取数据,post是向服务器传送数据. 2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到.post是通过 ...
- php 根据日期获取星座
根据日期获取星座 /* * * 获取星座 * 星座是按阳历来计算的 * $month 阳历月份 * $day 阳历日期 * */ public static function get_xingzuo( ...