import java.util.HashSet;
import java.util.Random;
import java.util.Set;
public class SetOfInteger {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Random rand=new Random(31);
Set <Integer> setcase=new HashSet<Integer>();
for(int i=0;i<5;i++){
setcase.add(rand.nextInt());
}
System.out.println(setcase);
}
}
明明在实例rand的时候指明在31里面随机了呀,为什么结果会是[2088556312, -919422249, -1153560832, -1714240356, 1687125168]
创建一个Random对象的时候可以给定任意一个合法的种子数,种子数只是随机算法的起源数字,和生成的随机数的区间没有任何关系。
故你写的31不是说在31里里面进行随机
朋友:31以内的随机数是这样写的;
希望能帮到你!
int val = (int)(Math.random()*31+1);
System.out.println(val);
A random seed (or seed state, or just seed) is a number (or vector) used to initialize a pseudorandom number generator.
Seed是随机数生成算法的输入参数。
要限定随机数区间,用如下方法:
Random rand = new Random();
int randInt = rand.nextInt( 16 ); //Generates a number in [0, 1, .., 15]
或者你的31写到nextInt()中去也行
这样 nextInt(31),而不是写在Random()的括号中!