草庐IT

java - 从两个数字中随机选择一个数字

我有两个整数,让他们成为inta=35:intb=70;我想在运行时随机选择其中一个并分配给另一个变量。即intc=aorb:我想到的一种方法是用这两个整数创建一个数组,然后找到一个介于0和1之间的随机整数,并将其用作数组的索引以获取数字..或者随机化boolean值并在if-else中使用它。我的问题是,是否有更好、更有效的方法来实现这一点?IE。从两个先前定义的整数中选择一个数字? 最佳答案 您是否有特定原因要求更有效的解决方案?除非此功能位于某处非常紧密的内部循环中(例如在光线追踪器中),否则您可能会尝试过早地优化您的代码。如

java - SecureRandom 的创建很慢,即使在 Java 8 中也是如此

我搜索了这个问题。我的印象是,它在Java8中得到了解决。但是突然之间,我开始在基于ubuntu14.04的新VM中遇到这个问题。2015-07-2714:56:35.324INFO11809---[localhost-startStop-1]o.a.c.util.SessionIdGeneratorBase:CreationofSecureRandominstanceforsessionIDgenerationusing[SHA1PRNG]took[167,833]milliseconds.Java版本是java-versionjavaversion"1.8.0_45"Java(TM

java - 获取 -1 和 1 之间的随机 double 值

我正在用Java创建一个神经网络,需要创建一个方法来初始生成随机权重。我需要创建一个返回-1和1之间的随机double值的函数,但不确定这样做的逻辑,因此非常感谢任何帮助。 最佳答案 您可以使用Random类的nextDouble()方法。Randomrng=newRandom();//togetadoublebetween-1and1returnrng.nextDouble()*2-1;//rng.nextDouble()isbetween0and1 关于java-获取-1和1之间的随

java - 从数组中选择一个随机值

我有一个数值数组,我想从该数组中随机选择一个值,然后将其插入到int中。多变的。我不确定您需要查看哪些代码。所以,这是for我用来生成13个数字(1-13)并将它们插入到数组中的循环。intclubsArray[];clubsArray=newint[13];for(inti=0;i这很好,但现在我需要从该数组中选择例如2个随机值(然后将其插入到一个变量中以供稍后使用。我浏览了很多网站,看到了类似ArrayList的内容为了将值插入数组然后使用Randomgenerator=newRandom()从数组中选择值,然后选择.remove()将其从数组中删除。但是当我用过它时,它不起作用。

java - Java 随机生成器如何工作?

我写了一个模拟掷骰子的程序Randomr=newRandom();intresult=r.nextInt(6);System.out.println(result);我想知道是否有一种方法可以“预测”下一个生成的数字以及JVM如何确定下一个生成的数字?我的代码在任何JVM和操作系统上输出的数字是否接近真正的随机数? 最佳答案 它们是伪随机数,这意味着就一般意图和目的而言,它们足够随机。然而,它们是确定性的并且完全依赖于种子。以下代码将两次打印出相同的10个数字。Randomrnd=newRandom(1234);for(inti=0

Java生成随机数{-1,0,1}

我需要一个函数来返回一个随机整数,该整数只能是-1、0或1。谢谢? 最佳答案 正如Apocalisp所写,你可以这样做:importjava.util.Random;Randomgenerator=newRandom();intrandomIndex=generator.nextInt(3)-1; 关于Java生成随机数{-1,0,1},我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/question

java - Java中如何生成固定长度的唯一标识符?

我正在尝试生成固定长度的唯一标识符,例如Megaupload为上传的文件生成的ID。例如:ALGYTAB5BCLD23A6在此示例中,使用A-Z和0-9,固定长度为8,不同的组合总数为2,821,109,907,456。如果生成的ID之一已被占用怎么办。这些ID将存储在数据库中,不应多次使用。我如何在Java中实现它?谢谢。 最佳答案 嗯...您可以通过以下方式模仿较小的GUID。将字符串的前4个字节作为编码的当前时间-在Unix之后经过的秒数。最后4个只是随机组合。在这种情况下,两个ID重合的唯一方法是它们是在同一秒构建的。由于其

java - 这个损坏的 Java Random.nextInt(long) 行为是怎么回事?

我发现当你给它一个2的幂时,这个方法似乎会惨败)和2的幂(互斥)总是相同;种子无所谓。例如:publicstaticvoidmain(String[]args){RandommRandom;for(inti=0;i我随意选择了2^4,但它似乎适用于任何2的幂。这是怎么回事?此外,我该如何避免这种情况? 最佳答案 出现这个问题有两个原因。Random类的相同种子。在nextInt(intn),如果n是2的幂1。Random类的种子相同。因为,您已经使用新的seed值启动了新的Random实例,这会影响nextInt值的生成。根据Ran

java - 平面上均匀分布的点在 Java 中聚集,为什么?

我想在*100平面上生成均匀分布的圆/点/节点。为此,我在java中使用Random()方法。具体来说,我是通过以下方式进行的:Randomr1=newRandom();for(inti=0;i但问题是,当我一遍又一遍地运行代码时,节点在平面上的间隔并不均匀,即存在集中的簇和一些未占用的空间block。任何想法,建议将不胜感激。下图显示了带有簇和空白的典型输出。圈子的数量只是圈子的ID。 最佳答案 如果你想让你的随机分布看起来更“均匀”,也就是说你想要更均匀地覆盖空间,你不能使用完全均匀的分布,因为它会包含“间隙”,正如@Adam指

java - 我如何确定编译器不会优化我的性能测试?

我有一个类执行一些耗时的计算。我正在尝试对其进行性能测试:intnumValues=1000000;Randomrandom=newRandom();startMeasuringTime();doubleresult;for(inti=0;i我使用的是随机值,因此编译器不会优化计算以达到一百万次相同。但是结果呢?编译器是否看到它不再被使用而忽略了调用(但是,它能看到方法调用可能产生的任何副作用吗?)我不想将结果放在某个地方(放入文件、数组或System.out),因为我认为这会减慢我不想测量的工作的测试速度。或者产生OutOfMemoryError。提前致谢。编辑:稍微更改了标题