当前位置:首页>开发>正文

java随机点名器不重复 为什么java中生成32位随机ID永远不会重复。

2023-04-12 03:13:44 互联网 未知 开发

java随机点名器不重复 为什么java中生成32位随机ID永远不会重复。

为什么java中生成32位随机ID永远不会重复。


java对象的散列码hashcode,有32位,有40亿的空间。
“永远不会重复”,没有说永远,好的散列函数在尽可能大的空间不重复。
个人认为。
1、可能重复,但重复后应该有处理机制。不担心重复。
2、在对象达到相当多的时候(比如10亿个),重复的几率才会变大。但实际使用上实时超过十万个对象的情况都不多。即很难重复。

如何用java产生不重复的随机函数

举个例子1-mport java.util.*
public class Test3 {
public static void main(String[] args) {
Vector vector = new Vector()
String str=""
int count=9
for (int i = 0 i < 9 i ) {
vector.add(i 1) //把 1-9 存入
}
for (int i = 0 i < 9 i ) {
int id=(int)(Math.random()*count) //随即取里面的数值 count控制随即大小
str =vector.get(id)
vector.remove(id) //删除已经取走的值
count--
}
System.out.println(str)
}
}

JAVA怎么实现从指定范围随机取不重复的6个数字


我写了一个给你:
public static int[] randomNum(int start, int end){
int[] array = new int[6]
for(int i = 0 i < 6 i ){
array[i] = (int)(Math.random() * (end - start) start)
for(int j = 0 j < ij ){//检测是否重复
if(array[i] == array[j]){
i = -1//重复重新从头开始
break
}
}
}
return array
}

全部的代码:

public class RandomNum {

public static void main(String[] args) {

int[] array = randomNum(0, 1000)
for (int i = 0 i < 6 i ) {
System.out.print(array[i] " ")
}

}

public static int[] randomNum(int start, int end) {
int[] array = new int[6]
for (int i = 0 i < 6 i ) {
array[i] = (int) (Math.random() * (end - start) start)
//System.out.print(array[i] " ")
for (int j = 0 j < i j ) {
if (array[i] == array[j]) {
i = -1
break
}
}
}
return array
}

}

random 怎么实现随机数不重复方法 java

java中实现随机数不重复主要思想是使用hashset来保存每个生成的数据,因为set集合本身内部机制实现了不保存相同的数据,代码如下:
 /**
 * 随机指定范围内N个不重复的数
 * 利用HashSet的特征,只能存放不同的值
 * @param min 指定范围最小值
 * @param max 指定范围最大值
 * @param n 随机数个数
 * @param HashSet set 随机数结果集
 */
    public static void randomSet(int min, int max, int n, HashSet set) {
        if (n > (max - min   1) || max < min) {
            return
        }
        for (int i = 0 i < n i ) {
            // 调用Math.random()方法
            int num = (int) (Math.random() * (max - min))   min
            set.add(num)// 将不同的数存入HashSet中
        }
        int setSize = set.size()
        // 如果存入的数小于指定生成的个数,则调用递归再生成剩余个数的随机数,如此循环,直到达到指定大小
        if (setSize < n) {
         randomSet(min, max, n - setSize, set)// 递归
        }
    }

最新文章