什么是洗牌算法?

在php中,有函数 shufle($arr);  可以直接打乱数组.而有些语言是没有现成的函数的.

那么可以自己写一个洗牌算法:

第一步:取一个随机数, 最小值和最大值分别为 1和数组的成员数(有的编程语言是从0开始有的语言是从1开始)

第二步:根据这个随机数从成员中提取一个成员.放到一个新的数组中

第三步:从原始数组中删除这个成员.再重复第一步

易语言代码:(如果是其他语言的话就没这么麻烦,因为易语言的参数必须指定数据类型.所以只能分别传参数了)

QQ截图20200520063343.jpg

.版本 2

.子程序 数组_打乱_洗牌算法, 整数型, , 返回数组成员数
.参数 要打乱的文本数组, 文本型, 参考 可空 数组
.参数 要打乱的整数数组, 整数型, 参考 可空 数组
.局部变量 a, 整数型
.局部变量 随机数, 整数型
.局部变量 i, 整数型
.局部变量 新数组整数型, 整数型, , "0"
.局部变量 新数组文本型, 文本型, , "0"

.如果真 (取反 (是否为空 (要打乱的整数数组)))
    a = 取数组成员数 (要打乱的整数数组)
    .计次循环首 (a, i)
        随机数 = 取随机数 (1, a - i + 1)
        加入成员 (新数组整数型, 要打乱的整数数组 [随机数])
        删除成员 (要打乱的整数数组, 随机数, )
    .计次循环尾 ()
    要打乱的整数数组 = 新数组整数型

.如果真结束

.如果真 (取反 (是否为空 (要打乱的文本数组)))
    a = 取数组成员数 (要打乱的文本数组)
    .计次循环首 (a, i)
        随机数 = 取随机数 (1, a - i + 1)
        加入成员 (新数组文本型, 要打乱的文本数组 [随机数])
        删除成员 (要打乱的文本数组, 随机数, )
    .计次循环尾 ()
    要打乱的文本数组 = 新数组文本型
.如果真结束

返回 (a)


相关推荐

php可逆带密码的文本加密算法 可配合易语言或其他语言使用

php可逆加密代码:参数一:要加密的文本参数二:密码function yanzheng_jiami($data, $key){ $key = md5($key); $x = 0

什么是极光算法,极光算法seO的影响

百度拥有庞大的网站数据库,是搜索引擎算法的风向标,推出的算法都是经过深思熟虑的,早在2013年百度就推出了星火算法,进行原创文章保护,但原创文章的归属权一直是一个难题,为此百度在2018年5月发布了极

常用的shell命令之文件压缩与解压(tar、gz、zip、rar等)

.tar解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!).gz解压1:gunzip FileName.gz解

shell脚本 日志分割

path=/www/wwwroot/123.com/_________________log/123.com.logpath2=/www/wwwroot/123.com/_______________

ssh连接工具_finalshell_install.rar

下载地址:链接: https://pan.baidu.com/s/1J817MS0OuzgQiC5KSSF9ZA 提取码: ecwq 复制这段内容后打开百度网盘手机App,操作更方便哦

php数组相关的函大全

函数名函数简介array新建一个数组array_change_key_case返回字符串键名全为小写或大写的数组array_chunk将一个数组分割成多个array_column返回数组中指定的一列a

数组的索引(下标)为什么从0开始

简单一句话: 就是为了方便 计算出每个元素的具体内存地址因为数组变量 实际上在内存上储存的是这个数组变量中第一个元素的的首地址,而系统在取数组中某个元素的值时,必须要得到具体的那个元素的地址才能获取到

php计算数组重复次最多的成员

直接ctrl+V 慢慢试去吧~<?php function mostRepeatedValues($array,$length=0){ //1. 计算数组的重复值 $arr