草庐IT

java - 在我需要重新播种之前,我可以使用 randomGenerator.nextDouble() 多少次?

我在Java中使用Random类作为伪随机数生成器。我多次使用函数nextDouble(~10^5)。我必须重新播种多少次才能防止获得相同的数字?是否需要重新播种?Randomgenerator=newRandom();double[]numbers=newdouble[n];for(inti=0;i这是一个实验,数字将用作空间上点的坐标,所以我希望分布尽可能均匀。另外,我该如何重新播种?我从哪里获得int种子? 最佳答案 随机数生成器将从两个随机int值中生成一个随机double。内部种子有48位,因此随机序列在最多2^48个in

java - 在一个范围内随机选择 k 个不同的数字

我需要选择k0ton-1范围内的随机元素.n可以达到10^9。和k范围可以从1ton-1.我只需将包含值0ton-1的数组改组即可在O(n)时间内完成此操作然后先选择k它的元素。但是当k很小,这种方法的时间和内存效率都很低。这个问题有O(k)的解决方案吗?注:已选k数字必须不同。我正在考虑解决方案。我可以想到两种方法。让R是要返回的集合。在范围内选择一个随机值并将其添加到R.继续这样做直到|R|=k.此过程需要sum(n/i)forn+1-k时间和O(k)空间。在数组中插入0到n-1,打乱顺序,先取k它的元素。这个过程需要O(n+k)的时间和空间。所以对于给定的k我可以在O(k)时间内

java - 在 Java 中选择 N 个随机不同整数的高效方法?

我目前正在寻找最好的方法,以便在n个整数范围内选择x个唯一整数。这就像多次执行Random.nextInt(range)只是它不应该选择两次相同的int。如果碰巧x>n那么结果将只包含n个整数我尝试自己做这件事,目前我是基于Fisher/Yatesshuffle做的:privatestaticfinalRandomR=newRandom();publicstaticint[]distinctRandoms(intnb,intmax){int[]all=newint[max];for(inti=0;i0&&j它的工作原理和性能似乎不错,但我不禁认为必须仍然有一些更高效的方法来做到这一点,

java - 传递给 Java 随机数生成器的种子值如何影响其输出?

传递给Java随机数生成器的种子值如何影响其输出?如果我知道种子值,我将如何确定它将输出哪些数字?还有一些种子值比其他种子值更能产生比其他种子值更多的伪随机性吗? 最佳答案 您无法在软件中生成真正的随机数,因为软件是确定性的:给定一些输入,原则上它总是会生成可预测的输出。因此,为了获得随机数,已经发明了许多算法来生成看起来随机的数字序列(但实际上并非如此-这就是它们被称为伪随机数的原因)。这样的算法从一些起始值、种子开始,然后用它进行一些计算以生成下一个伪随机数。如果算法很好,那么种子值应该没有差异:一个种子值在生成随机数时不应优于

java - 未聚焦组件中的 KeyPressed 和 mousePressed 事件

无需关注实现事件的组件即可检测击键的方法有哪些?这是我的想法:即使不关注myComponent,在按下一个键时,Action也应该参与。**mousePressed事件的相同问题。即使没有点击组件,也会检测到鼠标点击。**myComponent.addKeyListener(newKeyAdapter(){@OverridepublicvoidkeyPressed(KeyEvente){//Myactionhere}});在回答问题1后,即使应用程序在后台运行,也可以完成吗?假设我有一个浏览器,每次我点击或按下某个键时,都会执行给定的操作。我也接受阅读建议作为答案。如果您的答案与Key

java - 在给定范围内生成奇数随机数

如何生成给定范围内的奇数随机数..对于例如:对于范围在1到6..随机数是3或1或5生成随机数的方法:Random_No=Min+(int)(Math.Random()*((Max-Min)+1))引用HowdoIgeneraterandomintegerswithinaspecificrangeinJava?奇数随机数生成方法:Random_No=Min+(int)(Math.Random()*((Max-Min)+1))if(Random_No%2==0){if((Max%2)==0)&&Random_No==Max){Random_No=Random_No-1;}else{Rand

java - 用于在两台机器上创建 java Random 的种子值相同

如果我在java程序中使用相同的随机种子值并在两台不同的机器上运行它,我会得到相同的一组数字吗?例如longseed=123L;//maybetakenfromsomedatabaseorsomethingjava.util.Randomran=newjava.util.Random(seed);intret=0;for(inti=0;i我总是得到ret=782ret=450ret=176ret=789ret=795ret=657ret=834ret=837ret=585ret=453如果我在我的电脑上多次运行这个程序,我会得到相同的一组数字..但假设有人设法获得我使用的secret种

java - 随机数的分布

我有两种代码选择:选项1intmyFunc(){returnnewRandom().nextInt();}或者:选项2privatestaticfinalRandomrandom=newRandom();intmyFunc(){returnrandom.nextInt();}我知道选项2更符合习惯。我想知道选项1的有效性。在选项1中,我只会使用给定种子生成的第一个数字。在选项2中,我选择一个种子并使用该种子生成n个数字。IIUC对随机性的保证就在这个用例上。因此,我的问题是,如果我多次调用选项1,是否可以保证输出分布的均匀性? 最佳答案

java - 置换/加扰java中的arraylist元素

假设我有整数数组列表...有没有一种方法可以生成数组列表中元素的随机排列/排列所以如果列表是{1,2,3,4,5,6}调用一些方法randomPermute()会把它变成随机的东西,比如{1,3,2,6,5,4} 最佳答案 Collections.shuffle()做的工作:publicstaticvoidshuffle(Listlist)-使用默认的随机源随机排列指定的列表。所有排列以近似相等的可能性发生。http://download.oracle.com/javase/6/docs/api/java/util/Collecti

Java:以随机间隔安排任务

我是Java的新手,我正在尝试生成一个每5到10秒运行一次的任务,因此在5到10之间的任何时间间隔内,包括10。我尝试了几件事,但到目前为止没有任何效果。我的最新成果如下:timer=newTimer();Randomgenerator=newRandom();intinterval;//Thetaskwillrunafter10secondsforthefirsttime:timer.schedule(task,10000);//Waitforthefirstexecutionofthetasktofinish:try{sleep(10000);}catch(InterruptedE