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. ...
随机推荐
- .net 程序加密
.net 程序加密,一般是对生成的exe文件或者dll直接进行加壳,配合加密锁或者许可进行授权控制,既能保证安全性,又控制软件的使用. 加壳工具的选择 一般要考虑几点,第一是加壳的安全性,不能被轻易脱 ...
- input type = file 上传图片转为base64
项目背景是做图片识别,接口需要上传图片格式为base64格式的,react项目的相关代码: let reader = new FileReader();reader.readAsDataURL(e.t ...
- [js] 渲染树构建、布局及绘制
渲染树构建.布局及绘制
- 69A
#include <stdio.h> int main() { int n; int sum1=0, sum2=0, sum3=0; int x, y, z; scanf("%d ...
- Cocos Creator两个类相互引用(调用)
如果两个类相互引用,脚本加载阶段就会出现循环引用,循环引用将导致脚本加载出错:///////////Game.jsvar Item = require("Item");var Ga ...
- 关于12C中optimizer_adaptive_features参数介绍
optimizer_adaptive_features参数在OLAP数据仓库环境中可以获得较好的效果,实际在重上传轻查询的OLTP系统上,可以关闭这项新功能. 其主要功能是为了在语句执行过程中实时收集 ...
- Beta阶段敏捷冲刺日志的集合贴
Beta阶段冲刺前计划与安排:http://www.cnblogs.com/software-teamwork/p/9060118.html Day1(5.22):https://www.cnblog ...
- HDU 1260
Jesus, what a great movie! Thousands of people are rushing to the cinema. However, this is really a ...
- python 竖排文本
新建目录train,并将目录data和data1复制到train下 python test data/,data1/ 目录data和data1中包含很多文件,文件中内容都是以空格分隔,将所有文件内容都 ...
- Oarcle 入门之like关键字
like关键字 模糊查询,有两个特殊的符号"%" ,"_" “%”表示匹配零个或若干字符 放哪边就表示哪边有零到若干个未知符号,其作用起到占位符的效果. “_” ...