java随机数不重复
A. java中如何用random函数产生不重复的随机数
废话不多说直接上代码!
import java.util.ArrayList;
import java.util.Random;
public class Test {
public static void main(String[] args) {
// 生成 [0-n) 个不重复的随机数
// list 用来保存这些随机数
ArrayList list = new ArrayList();
int n = 10;
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);
}
System.out.println(list);
}
}
B. java如何生成一组随机的不重复的数列
思路:
0)、把从min到max的可能出现的数字全部放进一个候选List;
1)、随机生成索引index(0 <= index <= (list.size()-1));
2)、根据index从List中取出一个数,list.get(index),并移除这个元素;
importjava.util.ArrayList;importjava.util.List;importjava.util.Random;publicclassMyRandom{
/**
*根据min和max随机生成一个范围在[min,max]的随机数,包括min和max
*@parammin
*@parammax
*@returnint
*/
publicintgetRandom(intmin,intmax){
Randomrandom=newRandom();
returnrandom.nextInt(max-min+1)+min;
}
/**
*根据min和max随机生成count个不重复的随机数组
*@parammin
*@parammax
*@paramcount
*@returnint[]
*/
publicint[]getRandoms(intmin,intmax,intcount){
int[]randoms=newint[count];
List<Integer>listRandom=newArrayList<Integer>();
if(count>(max-min+1)){
returnnull;
}
//将所有的可能出现的数字放进候选list
for(inti=min;i<=max;i++){
listRandom.add(i);
}
//从候选list中取出放入数组,已经被选中的就从这个list中移除
for(inti=0;i<count;i++){
intindex=getRandom(0,listRandom.size()-1);
randoms[i]=listRandom.get(index);
listRandom.remove(index);
}
returnrandoms;
}
}
C. JAVA中怎样实现数组中随机数不重复
可以参考下面的代码:
public static void main(String[] args) {
int s = -1;
int a[] = new int[100];
int i = 0;
while (i < 100) {
s = (int) (Math.random() * 100 + 1);
for (int j = 0; j < 100; j++) {
if (a[j] == s) {
break;
} else if (j == i) {
a[i] = s;
i++;
break;
}
}
}
}
(3)java随机数不重复扩展阅读:
java参考函数
max(x,y) 返回 x 和 y 之间较大的数
min(x,y) 返回 x 和 y 之间较小的数
pow(x,y) 返回 y^x 的值
random() 返回位于 0 到 1 之间的随机函数
round(x) 四舍五进后与整
sin(x) 返回数字的正弦值
sqrt(x) 返回数字的平方根
tan(x) 返回一个角度的正切值
toSource() 显示对象的流代码
valueOf() 返回数教对象的本初值
D. java中怎么得到有10个不重复的随机的元素的整型数组
最直观的就是:生成一个随机数放入数组,放入前和数组中所有元素比较,数组中没有加入数组,有的话再生成再比较。当数组元素达到10个是停止生成随机数。
E. java怎么产生不会重复的随机数
//产生20个不重复随机数
publicstaticvoidmain(String[]args){
booleantag=true;
List<Integer>list=newArrayList<>();
for(inti=0;i<20;i++){
intv=(int)(Math.random()*100+1);
for(Integerinteger:list){
if(integer==v){
tag=false;
}
}
if(tag){
list.add(v);
}
}
for(Integerinteger:list){
System.out.println(integer);
}
}
F. 如何让JAVA生成不重复随机数
一个不错的算法,很简单,但有效。不过如果范围比较大,则占用内存大,就不推荐使用了。个人感觉1000个以内的就可以考虑。这东西也许你早就知道了,但我依然惊叹算法的力量。看代码 import java.util.*;/** * 生成不重复随机数的一种算法。***/ public class T { public static void main(String args) { // 种子你可以随意生成,但不能重复 int seed = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int ranArr = new int; Random ran = new Random(); // 数量你可以自己定义。 for (int i = 0; i seed.length; i++) { // 得到一个位置 int j = ran.nextInt(seed.length - i); // 得到那个位置的数值 ranArr[i] = seed[j]; // 将最后一个未用的数字放到这里 seed[j] = seed[seed.length - 1 - i];} System.out.println("ranArr:" + Arrays.toString(ranArr));}} 一个运行结果
G. java如何生成12位永远不重复的数字
Calendar calendar = Calendar.getInstance();
System.out.println("现在:"+calendar.getTime().getTime());
calendar.add(Calendar.YEAR, 10);
System.out.println("10年后:"+calendar.getTime().getTime());
时间戳高并发还是会有重复的,你应该每获取一次加1的方法生成。用锁对象或者把方法声明为synchronized保证并发也不会重复。如果有用数据库,也可以用数据库提供的sequence来帮你生成。
(7)java随机数不重复扩展阅读:
当编辑并运行一个Java程序时,需要同时涉及到这四种方面。使用文字编辑软件(例如记事本、写字板、UltraEdit等)或集成开发环境(Eclipse、MyEclipse等)在Java源文件中定义不同的类;
通过调用类(这些类实现了Java API)中的方法来访问资源系统,把源文件编译生成一种二进制中间码,存储在class文件中,然后再通过运行与操作系统平台环境相对应的Java虚拟机来运行class文件,执行编译产生的字节码,调用class文件中实现的方法来满足程序的Java API调用。
H. Java如何让随机数不重复
1.JAVA中生成随机数的方式 1、在j2se中使用Math.random()令系统随机选取一个0~1之间的double类型小数,将其乘以一个数,比如25,就能得到一个0~25范围内的随机数,这个在j2me中没有...
2.随机给定范围内N个不重复的数 1、方法一:最简单最易理解的两重循环去重 /** * 随机指定范围内N个不重复的数 * 最简单最基本的方法 * @param min 指定范围最小值 * @param max ...
I. random 怎么实现随机数不重复方法 java
java中实现随机数不重复主要思想是使用hashset来保存每个生成的数据,因为set集合本身内部机制实现了不保存相同的数据,代码如下:
/**
*随机指定范围内N个不重复的数
*利用HashSet的特征,只能存放不同的值
*@parammin指定范围最小值
*@parammax指定范围最大值
*@paramn随机数个数
*@paramHashSet<Integer>set随机数结果集
*/
publicstaticvoidrandomSet(intmin,intmax,intn,HashSet<Integer>set){
if(n>(max-min+1)||max<min){
return;
}
for(inti=0;i<n;i++){
//调用Math.random()方法
intnum=(int)(Math.random()*(max-min))+min;
set.add(num);//将不同的数存入HashSet中
}
intsetSize=set.size();
//如果存入的数小于指定生成的个数,则调用递归再生成剩余个数的随机数,如此循环,直到达到指定大小
if(setSize<n){
randomSet(min,max,n-setSize,set);//递归
}
}
J. JAVA怎么生成不重复的随机数
没办法,只好把生成的随机数放到set中,以后每次取随机数,判一下set,有的话,重新生成。