生成 n 个不同的随机数且随机数区间为 [0,n)
生成 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)的更多相关文章
- 动态生成16位不重复随机数、随机创建2位ID
/** 1. * 动态生成16位不重复随机数 * * @return */ public synchronized static String generate16() { StringBuffer ...
- shell 生成指定范围随机数与随机字符串 .
shell 生成指定范围随机数与随机字符串 分类: shell 2014-04-22 22:17 20902人阅读 评 ...
- 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 ...
- python生成随机数、随机字符串
python生成随机数.随机字符串 import randomimport string # 随机整数:print random.randint(1,50) # 随机选取0到100间的偶数:print ...
- JS生成指定范围内的随机数(支持随机小数)
直接需要函数的话,直接到文章的最后面找. ============================================================= 转载:https://www.cn ...
- 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 ...
- JS生成限定整数区间范围内的随机整数
对于整数区间获取随机整数: m,n均为整数,且n>m. 获取[m,n)区间内的随机整数: 1 var aNumber = (n - m) * Math.random() + m; 2 var r ...
- 关于 Math.random()生成指定范围内的随机数的公式推导
关于 Math.random()生成指定范围内的随机数的公式推导 在 java 中,用于生成随机数的 Math 方法 random()只能生成 0-1 之间的随机数,而对于生成指定区间,例如 a-b ...
- js中Math.random()生成指定范围数值的随机数
http://www.111cn.net/wy/js-ajax/57062.htm Math.random() 这个方法相信大家都知道,是用来生成随机数的.不过一般的参考手册时却没有说明如何用这个方法 ...
随机推荐
- 主席树 Couriers
[bzoj3524/2223][Poi2014]Couriers 2014年4月19日1,2571 Description 给一个长度为n的序列a.1≤a[i]≤n.m组询问,每次询问一个区间[l,r ...
- [转]C++重载()(强制类型转换运算符)
在 C++ 中,类型的名字(包括类的名字)本身也是一种运算符,即类型强制转换运算符. 类型强制转换运算符是单目运算符,也可以被重载,但只能重载为成员函数,不能重载为全局函数.经过适当重载后,(类型名) ...
- TensorFlow(八):tensorboard可视化
import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data from tensorflow.c ...
- NetworkX系列教程(5)-查看graph的信息
小书匠Graph图论 有时候graph建好后,我们并不清除该graph内节点的,边的信息,这就需要调用函数去查看了. 目录: 6.查看Graph的信息 6.1查看graph内节点,边的 6.2查看gr ...
- 齿轮 HYSBZ - 4602 (DFS实现)
齿轮 HYSBZ - 4602 题意:很好理解就不啰嗦了. 致谢:感谢队友小明. 题解:嗯,一开始想到的是并查集,后来,就先看了另一道题,xj写dfs和暴力,就卡死了.于是来补这题了,前向星建图 题解 ...
- Spring Cloud Gateway(十):网关过滤器工厂 GatewayFilterFactory
本文基于 spring cloud gateway 2.0.1 1.GatewayFilterFactory 简介 路由过滤器允许以某种方式修改传入的HTTP请求或传出的HTTP响应. 路径过滤器的范 ...
- (转)supervisor
转载:https://www.cnblogs.com/zhoujinyi/p/6073705.html 进程管理supervisor的简单说明 背景: 项目中遇到有些脚本需要通过后台进程运行,保证不被 ...
- map判断
返回的map对象在!=null的时候有两种情况,一种是没有数据 返回的是{},另外一种是有数据. 判断的时候map!=null&&!map.isEmpty()
- ST (Sparse Table:稀疏表)算法
1541:[例 1]数列区间最大值 时间限制: 1000 ms 内存限制: 524288 KB提交数: 600 通过数: 207 [题目描述] 输入一串数字,给你 MM 个询问 ...
- CDH 安装的博客地址记录
1. 集群环境配置 https://www.cnblogs.com/yinzhengjie/articles/11019333.html 2. 二进制方法安装 https://www.cnblogs. ...