草庐IT

Java生成非重复随机数

我想在Java中创建一组不重复的随机数。例如,我有一个数组来存储从0到9999的10,000个随机整数。这是我目前所拥有的:importjava.util.Random;publicclassSort{publicstaticvoidmain(String[]args){int[]nums=newint[10000];RandomrandomGenerator=newRandom();for(inti=0;i但是上面的代码会产生重​​复。如何确保随机数不重复? 最佳答案 Integer[]arr={...};Collections.

java - Java中setSeed之后的第一个随机数总是相似的

为了提供一些背景信息,我一直在用Java编写一个基本的Perlin噪声实现,在实现播种时,我遇到了一个我无法解释的错误。为了无论查询哪组坐标的噪声水平以及以什么顺序每次都为同一个种子生成相同的随机权重vector,我生成了一个新种子(newSeed),基于原始种子和权重vector坐标的组合,并通过运行将其作为权重vector随机化的种子:rnd.setSeed(newSeed);weight=newNVector(2);weight.setElement(0,rnd.nextDouble()*2-1);weight.setElement(1,rnd.nextDouble()*2-1)

java - 带概率的随机数

我想知道在特定范围内生成随机数的最佳方法是什么(例如在Java中),其中每个数字都有一定的发生概率?例如从[1;3]中生成具有以下概率的随机整数:P(1)=0.2P(2)=0.3P(3)=0.5现在我正在考虑在[0;100]内生成一个随机整数并执行以下操作的方法:如果它在[0;20]内-->我得到了我的随机数1。如果它在[21;50]内-->我得到了我的随机数2。如果它在[51;100]之内-->我得到了我的随机数3。你会说什么? 最佳答案 你的方法已经很不错了,适用于任何范围。只是想:另一种可能性是通过乘以一个常数乘数来去除分数,

使用种子的 Java 随机数

这是我使用种子作为参数生成随机数的代码:doublerandomGenerator(longseed){Randomgenerator=newRandom(seed);doublenum=generator.nextDouble()*(0.5);returnnum;}每次我给一个种子并尝试生成100个数字时,它们都是相同的。我该如何解决这个问题? 最佳答案 如果您提供相同的种子,那是正常的。这是允许测试的重要功能。检查这个以了解伪随机生成和种子:PseudorandomnumbergeneratorApseudorandomnumb

java - 在 Java 中生成唯一的随机数

我正在尝试获取0到100之间的随机数。但我希望它们是唯一的,而不是按顺序重复。例如,如果我有5个数字,它们应该是82,12,53,64,32而不是82,12,53,12,32我用过这个,但它会在一个序列中生成相同的数字。Randomrand=newRandom();selected=rand.nextInt(100); 最佳答案 将范围内的每个数字依次添加到list中结构。Shuffle它。取第一个“n”。这是一个简单的实现。这将打印1-10范围内的3个唯一随机数。importjava.util.ArrayList;importja

mongodb - 使用随机数更新集合中的所有文档

我正在尝试使用随机数更新集合中的所有文档。每个文档应该有不同的编号。我当前的代码db.myDoc.update({rand:{$exists:false}},{$set:{rand:Math.random()}},{multi:true})使用相同的随机值填充所有文档。如何解决? 最佳答案 您可以使用cursor.forEach()mongoshell中的cursor方法来实现这一点:db.myDoc.find({rand:{$exists:false}}).forEach(function(mydoc){db.myDoc.upda

c++ - 如何使用 C++11 标准库生成随机数

新的C++11标准有一整章专门介绍随机数生成器。但是我如何执行过去像这样编码的最简单、最常见的任务,但不求助于标准C库:srand((unsignedint)time(0));inti=rand();随机数引擎、分布和种子是否有合理的默认值,可以开箱即用? 最佳答案 您应该能够执行以下操作:std::default_random_enginee((unsignedint)time(0));inti=e();default_random_engine的质量取决于实现。您也可以使用std::min_rand0或std::min_rand

c++ - 多个线程的随机数

问题我打算为Linux编写一个C++11应用程序,它基于大约一百万个伪随机32位数字进行一些数值模拟(不是密码学)。为了加快速度,我想使用桌面CPU的所有内核在并行线程中执行模拟。我想使用MersenneTwistermt19937由boost作为PRNG提供,我想出于性能原因,每个线程我应该有一个这样的PRNG。现在我不确定如何播种它们以避免在多个线程中生成相同的随机数子序列。替代方案以下是我目前想到的替代方案:独立于/dev/urandom为每个线程播种PRNG。我有点担心系统熵池耗尽的情况,因为我不知道系统内部PRNG是如何运行的。由于/dev/urandom本身正在使用Mers

c++ - 每次运行程序时都使用相同的随机数

我输出的随机数,每次运行我的游戏时都以相同的顺序输出。为什么会这样?我有#include我正在使用它来生成随机数randomDiceRollComputer=1+rand()%6; 最佳答案 您需要播种随机数生成器:试着把它放在程序的开头:srand(time(NULL));请注意,您需要#include.这里的想法是在每次启动程序时为RNG播种不同的编号。通过使用时间作为种子,每次启动程序时都会得到不同的数字。 关于c++-每次运行程序时都使用相同的随机数,我们在StackOverfl

c++ - 跨平台一致的伪随机数

我正在寻找一种生成伪随机数序列的方法,该方法将在任何平台上为给定种子产生相同的序列结果。我假设rand()/srand()不会是一致的(我很容易对这个假设出错)。 最佳答案 类似于MersenneTwister(fromBoost.Random)是确定性的。 关于c++-跨平台一致的伪随机数,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/922358/