什么是洗牌算法?
在php中,有函数 shufle($arr); 可以直接打乱数组.而有些语言是没有现成的函数的.
那么可以自己写一个洗牌算法:
第一步:取一个随机数, 最小值和最大值分别为 1和数组的成员数(有的编程语言是从0开始有的语言是从1开始)
第二步:根据这个随机数从成员中提取一个成员.放到一个新的数组中
第三步:从原始数组中删除这个成员.再重复第一步
易语言代码:(如果是其他语言的话就没这么麻烦,因为易语言的参数必须指定数据类型.所以只能分别传参数了)
.版本 2 .子程序 数组_打乱_洗牌算法, 整数型, , 返回数组成员数 .参数 要打乱的文本数组, 文本型, 参考 可空 数组 .参数 要打乱的整数数组, 整数型, 参考 可空 数组 .局部变量 a, 整数型 .局部变量 随机数, 整数型 .局部变量 i, 整数型 .局部变量 新数组整数型, 整数型, , "0" .局部变量 新数组文本型, 文本型, , "0" .如果真 (取反 (是否为空 (要打乱的整数数组))) a = 取数组成员数 (要打乱的整数数组) .计次循环首 (a, i) 随机数 = 取随机数 (1, a - i + 1) 加入成员 (新数组整数型, 要打乱的整数数组 [随机数]) 删除成员 (要打乱的整数数组, 随机数, ) .计次循环尾 () 要打乱的整数数组 = 新数组整数型 .如果真结束 .如果真 (取反 (是否为空 (要打乱的文本数组))) a = 取数组成员数 (要打乱的文本数组) .计次循环首 (a, i) 随机数 = 取随机数 (1, a - i + 1) 加入成员 (新数组文本型, 要打乱的文本数组 [随机数]) 删除成员 (要打乱的文本数组, 随机数, ) .计次循环尾 () 要打乱的文本数组 = 新数组文本型 .如果真结束 返回 (a)