洗牌算法

随机打乱一个数组的顺序。
场景:验证码之类。要求生成n位不重复的数字组合(0<n<=10)
交换是核心的点。

public class Shuffle {
    public static int[] shuffle(int[] arr){
        for(int i = 0;i<arr.length;i++){
            int j = (int)(i + Math.floor(Math.random()*(arr.length-i)));
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
        return arr;
    }
    public static void main(String[] args){
        int [] arr = {1,2,3,4,5,6,7,8,9,0};
        shuffle(arr);
        for(int i = 0;i<arr.length;i++){
            System.out.print(arr[i]);
        }
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.Fisher–Yates Shuffle(费雪耶兹 随机置乱算法)   算法思想就是从原始数组中随机抽取一个新...
    one_zheng阅读 3,897评论 0 2
  • 大家好,我是IT修真院郑州分院第七期的学员冯亚超,一枚正直纯洁善良的WEB程序员 今天给大家分享一下,洗牌算法具体...
    f056917阅读 766评论 0 0
  • 最近做音乐播放器,基本功能已实现,准备再写一个循环播放功能,其中涉及列表循环、单曲循环、随机循环。实现这几个功能本...
    _Dot912阅读 5,660评论 3 6
  • 一次偶然的机会,需要我生成一个长度为len的数组。数组的内容是[0-len)。这并不难,分分钟生成这样一个数组: ...
    xhbisme阅读 832评论 0 0
  • 我室友说你科二挂了五次竟然还有心情哼歌! 那我就写篇文章告诉大伙儿,我科二挂了五次为什么还在哼歌,我告诉你我因这五...
    独角兽_苏城阅读 555评论 0 2