【专题】随机不重复原理

随机不重复原理:

重要思路,通过设置标志判断重复,达到不重复。
判断重复,直接通过改变多个元素为一个标志,则能够简单实现重复判断。
这个思路其实在前面做棋盘中的随机位置的时候就已经有过相似的思路,只是自己不会 触类旁通 举一反三。

核心思路:将已经用过的数设置为一个二分判断的标志,类似于boolean类型的是和否。

题目:

生成一个0~9间的随机不重复数组

package com.share.demo03_27;

import java.util.Arrays;

/**
 * 生成一个0~9的顺序随机不重复数组<br>
 * 思路:<br>
 * 两个数组,<br>
 * 一个存储0~9的顺序不随机不重复数组<br>
 * 一个存储0~9的顺序随机不重复数组,这是需要得到的结果<br>
 * <p>
 * 随机数是第一个数组的下标,取出第一个数组中的值,将第一个数组中的该值设置为一个标志<br>
 * 下一次取数的时候,只有下标不为标志的才能够取,从而达到了不重复<br>
 * 
 * @author brx
 */
public class Test {
    public static void main(String[] args) {
        test();
    }

    /**
     * 核心思路:<br>
     * 设置a[r]=-1;将已经用过的数设置为一个二分判断的标志,类似于boolean类型的是和否
     */
    public static void test() {
        int[] a = new int[10];
        int[] b = new int[10];
        for (int i = 0; i < 10; i++) {
            a[i] = i;
        }
        for (int i = 0; i < 10; i++) {
            int r = 0;
            do {
                r = (int) (Math.random() * 10);
            } while (a[r] == -1);

            b[i] = a[r];
            a[r] = -1;
        }
        System.out.println(Arrays.toString(b));
    }
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 回溯算法 回溯法:也称为试探法,它并不考虑问题规模的大小,而是从问题的最明显的最小规模开始逐步求解出可能的答案,并...
    fredal阅读 13,712评论 0 89
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,837评论 18 139
  • 高贵不是穿金戴银,绫罗绸缎,珠光宝气,我想它是一种坚持,不被世俗负面所影响的坚持自己底线,坚持自己的善良。 我并不...
    阿黛茜阅读 493评论 2 8
  • 二十五 我算服了 “赵倩,有件事我想问问你。”石伟明刚把赵倩请到旅店,就着着急急和赵倩提起了...
    冯二二阅读 447评论 0 0
  • 自我提升阅读打卡第215天(11月18日) ...
    vv167阅读 180评论 0 0