生成 n 个不同的随机数且随机数区间为 [0,n)

Java 实现

import java.util.ArrayList;
import java.util.List;
import java.util.Random; /**
* TestRandom class
*
* @author libin
* @date 2019/4/17 9:40
*/
public class TestRandom {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
System.out.println(getDiffNO(10));
}
} /**
* 生成 n 个不同的随机数,且随机数区间为 [0,n)
*
* @param n 生成随机数的个数
* @return 返回生成 [0-n) 个不重复的随机数,用 list 来保存这些随机数
*/
public static List<Integer> getDiffNO(int n) {
// list 用来保存这些随机数
List<Integer> list = new ArrayList<Integer>();
Random rand = new Random();
boolean[] bool = new boolean[n];
int num = 0;
for (int i = 0; i < n; i++) {
do {
// 如果产生的数相同则继续循环
num = rand.nextInt(n);
} while (bool[num]);
bool[num] = true;
list.add(num);
}
return list;
}
}

运行结果

[0, 9, 2, 1, 4, 5, 3, 6, 7, 8]
[8, 5, 3, 4, 1, 2, 6, 7, 9, 0]
[4, 6, 1, 5, 3, 0, 8, 7, 9, 2]
[6, 7, 9, 8, 0, 1, 2, 5, 3, 4]
[5, 1, 4, 9, 0, 7, 8, 6, 3, 2]
[2, 8, 3, 1, 5, 4, 7, 0, 9, 6]
[7, 8, 4, 5, 1, 9, 3, 0, 6, 2]
[3, 1, 8, 2, 6, 0, 9, 4, 5, 7]
[2, 1, 0, 7, 4, 5, 8, 3, 9, 6]
[0, 4, 3, 1, 7, 6, 8, 5, 9, 2] Process finished with exit code 0

参考资料

生成 n 个不同的随机数且随机数区间为 [0,n)的更多相关文章

  1. 动态生成16位不重复随机数、随机创建2位ID

    /** 1. * 动态生成16位不重复随机数 * * @return */ public synchronized static String generate16() { StringBuffer ...

  2. shell 生成指定范围随机数与随机字符串 .

    shell 生成指定范围随机数与随机字符串         分类:             shell              2014-04-22 22:17     20902人阅读     评 ...

  3. random and password 在Linux下生成crypt加密密码的方法,shell 生成指定范围随机数与随机字符串

    openssl rand -hex n (n is number of characters) LANG=c < /dev/urandom tr -dc _A-Z-a-z-0-9 | head ...

  4. python生成随机数、随机字符串

    python生成随机数.随机字符串 import randomimport string # 随机整数:print random.randint(1,50) # 随机选取0到100间的偶数:print ...

  5. JS生成指定范围内的随机数(支持随机小数)

    直接需要函数的话,直接到文章的最后面找. ============================================================= 转载:https://www.cn ...

  6. js生成1-100不重复的随机数及生成10个1-100不重复的随机数

    //生成1-100不重复的随机数 var count=100; var a=new Array(); for(var i=0;i<100;i++){ a[i]=i+1; } a.sort(fun ...

  7. JS生成限定整数区间范围内的随机整数

    对于整数区间获取随机整数: m,n均为整数,且n>m. 获取[m,n)区间内的随机整数: 1 var aNumber = (n - m) * Math.random() + m; 2 var r ...

  8. 关于 Math.random()生成指定范围内的随机数的公式推导

    关于 Math.random()生成指定范围内的随机数的公式推导 在 java 中,用于生成随机数的 Math 方法 random()只能生成 0-1 之间的随机数,而对于生成指定区间,例如 a-b ...

  9. js中Math.random()生成指定范围数值的随机数

    http://www.111cn.net/wy/js-ajax/57062.htm Math.random() 这个方法相信大家都知道,是用来生成随机数的.不过一般的参考手册时却没有说明如何用这个方法 ...

随机推荐

  1. Bzoj 2820: YY的GCD(莫比乌斯反演+除法分块)

    2820: YY的GCD Time Limit: 10 Sec Memory Limit: 512 MB Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x& ...

  2. python合并多个txt文件

    python合并多个txt文件 #合并一个文件夹下的多个txt文件 #coding=utf-8 import os #获取目标文件夹的路径 filedir = os.getcwd()+'\\数据' # ...

  3. CodeForces 750A New Year and Hurry

    #include<bits/stdc++.h> using namespace std; int main() { int n, k, i, sum; while(~scanf(" ...

  4. windows server2012 搭建.netcore+nginx+nssm运行环境

    1.linux+.netcore+sqlserver的坑 linux不支持访问sqlserver2008及以下的版本(由于System.Data.SqlClient.dll的限制.windows上面访 ...

  5. Go语言之快速排序

    package main import "fmt" func partition(array []int, i int, j int) int { //第一次调用使用数组的第一个元 ...

  6. $.extend和$.fn.extend详解

    一.定义 $.extend()属于j全局的Query对象,用于将一个或多个对象合并到目标对象上: $.fn.extend()属于jQuery的原型对象,用于在jQuery原型上扩展实例属性和方法. 二 ...

  7. Linux Touch命令的8种常见使用方法

    Linux touch命令不仅可以用于在Linux上创建空文件. 您可以使用它来更改现有文件的时间戳,包括其访问权限和修改时间. 本文介绍了8种可以通过Linux终端使用touch命令的方案. 我们在 ...

  8. T-MAX组--项目冲刺(第一天)

    THE FIRST DAY 项目相关 作业相关 具体描述 所属班级 2019秋福大软件工程实践Z班 作业要求 团队作业第五次-项目冲刺 作业正文 T-MAX组--项目冲刺(第一天) 团队名称 T-MA ...

  9. SQLite3中的日期时间函数使用小结

    代码如下: import sqlite3conn = sqlite3.connect('/tmp/sqlite.db')cur = conn.cursor() 接下来干嘛呢?建一张表吧.这里需要注意的 ...

  10. SQL优化 | Oracle 绑定变量

    之前整理过一篇有关绑定变量的文章,不太详细,重新补充一下. Oracle 绑定变量 http://www.cndba.cn/Dave/article/1275 一.绑定变量 bind variable ...