永发信息网

怎么让中间的产生的随机数不重复啊?

答案:6  悬赏:30  手机版
解决时间 2021-11-10 13:30
怎么让中间的产生的随机数不重复啊?
最佳答案
Random()两个构造方法
Random()可以说是以System.monoTime为种子,理论上不会产生重复数字,但是实际运行中还是有可能
Random(long seed),指定种子产生随机数,理论上不同种子不会有相同随机数。
this.seed = (seed ^ 0x5DEECE66DL) & ((1L << 48) - 1); 但是受限制于计算机支持的位数,仍然有重复可能
因此,理论上都实现不了真正的随机数,所以要想真正的产生不重复数字,只能去检测是否存在于已经生成的数字当中。用一个全局变量Set就可以实现了,对于你的问题,下面的代码应该足够了
全部回答
假设我让随机数在 1-16中产生,所以我创建一个16个数的数组,把随机数写成函数放到最外侧。第一次产生随机数,去数组中匹配,如果有,删除数组中那个数,继续执行;第二次产生随机数,去数组中匹配,如果没有,调用之前我们封装好的产生随机数的函数,再进行随机。直到产生数组中匹配的数,这样16次不会有一次重复。(因为之前我们把匹配到的数删除了,所以没找到说明和之前的重复)
伪随机数
new Random(9999);每次一样是因为你固定你的随机因子是9999只有每次修改不同的因子才能使每次出现的数不一样.
在实例化的时候可以把你的9999每次改一下。用system.currentTimeMillis() ;传进去这样会使你每次的随机数都不一样
例子Random r= new Random(System.currentTimeMillis() );
r.nextInt(9999);
或者在你每次
nextInt前设置一下你随机数的种子
r.setSeed(System.currentTimeMillis() );
也是OK的.
这样你每次出来的随机数都不一样了.

public GuessNumberGUI() {
super("猜字游戏");
this.randGenerator = new Random(System.currentTimeMillis() );
this.randomNum = generateRandomNum();
System.out.println("Construtor"+this.randomNum);
initComponent();
componentAddListener();
}
把你的构造函数改成这样就行了
把产生的随机数放到hashset里面
Random()两个构造方法
Random()可以说是以System.monoTime为种子,理论上不会产生重复数字,但是实际运行中还是有可能
Random(long seed),指定种子产生随机数,理论上不同种子不会有相同随机数。
this.seed = (seed ^ 0x5DEECE66DL) & ((1L << 48) - 1); 但是受限制于计算机支持的位数,仍然有重复可能
因此,理论上都实现不了真正的随机数,所以要想真正的产生不重复数字,只能去检测是否存在于已经生成的数字当中。用一个全局变量Set就可以实现了,对于你的问题,下面的代码应该足够了
import java.util.Random;
import java.util.Set;
import java.util.TreeSet;

public class Test {

private static Set set = new TreeSet();

private static Random rand = new Random();

public static void main(String[] args) {

for(int i = 10, randNum; i < 50; i++){
randNum = generateRandomNum();
System.out.println(randNum);
}

}

static int generateRandomNum(){

int randNum = 0;
do{
randNum = rand.nextInt();
}while(set.contains(randNum) || randNum <= 1000);

return randNum;
}
}
用个list列表,存储你生成的随机数,并检测是否重复,如果重复就再生成,暂时只能想到这样的了。虽然效率不高
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
如何快速提升芝麻信用分
中国移动(邹鲍路店)地址在哪,我要去那里办事
y=-x²+18x的定义域为
怎样可以和父母断绝关系?
土鳖虫和黄瓜子有什么功效
冰箱隔一段时间就会老响,为什么的啊?
潍柴280和290油泵一样吗
技诺咖啡机是国产牌子吗
(-3)∧2013×(-1/3)∧2011等于多少
我认了一个大我十岁的姐姐
红信代表什么?
怎样推销储值消费会员卡
我想永远和王俊凯相爱,大家可以祝福我和王俊
日语心肥大什么意思
昆明20'7年6月份钢筋价格是多少'
推荐资讯
水晶眼镜假货太多,上聊天记录,让大家看看,
有人偷袭别人 最终打的别人生活不能自理 据说
渝之梦重庆小面我想知道这个在什么地方
中速跑步每小时多少千米
生死修短,岂能强求?出自庄子那篇?并给出原句
互壹易袋平台是骗子吗有贷出款的没有
我想从邯郸到舞钢 请问怎么坐车?
马老师书画培训地址在什么地方,我要处理点事
荣县富城职高就读要求,我初中没读完,两年了
1.25×32×0.25怎么简便运算
谢求大师指点八字1986年农历9月初四8:00生
虫踯躅不受制,焉能仿效?的意思
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?