草庐IT

播种器

全部标签

java - 在 java 中跨平台地在没有时间的情况下播种随机生成器

我几乎同时在两个线程上初始化两个随机数生成器,我希望这两个生成器的行为完全不同。我会经常一个接一个地在两个生成器上调用Random.nextInt(7)。使用System.currentTimeMillis()不是一个好主意,因为看起来我的计算机速度如此之快,以至于我从两个生成器获得的数字很可能是相同的。那么有什么方法可以配置Random,这样尽管它们一个接一个地被调用,但它们的行为仍然不同?我希望该解决方案是跨平台兼容的,因此任何特定于平台的想法(例如从/dev/random读取)都是NotAcceptable。感谢您的帮助。 最佳答案

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 - 比播种 SecureRandom 更好的创建 AES key 的方法

我需要将加密数据从Java客户端发送到C#服务器。现在我正在学习如何使用AES(要求)加密数据。按照这个接受的答案androidencryption/decryptionwithAES我正在执行以下操作:byte[]keyStart="qweroiwejrwoejlsifeoisrn".getBytes();//Randomcharacterstringbyte[]toEncrypt=myMessageString.getBytes();keyGen=KeyGenerator.getInstance("AES");sr=SecureRandom.getInstance("SHA1PRN

java - SecureRandom 自播种

我找到了很多关于SecureRandom的例子看起来像这样的类:Randomrandom=newSecureRandom();intrandomInteger=random.nextInt();或者像这样:try{Randomrandom=SecureRandom.getInstance("SHA1PRNG");intrandomInteger=random.nextInt();}catch(NoSuchAlgorithmExceptionexception){//...}或类似的东西。然而,SecureRandom()和SecureRandom.getInstance(String)

c++ - 多次播种伪随机数生成器的问题?

我已经看到很多关于每次执行时不要多次为伪随机数生成器播种的建议,但从未伴随过详尽的解释。当然,很容易看出为什么以下(C/C++)示例不是一个好主意:intget_rand(){srand(time(NULL));returnrand();}因为每秒多次调用get_rand会产生重复的结果。但是下面的例子难道不是一个可以接受的解决方案吗?MyRand.h#ifndefMY_RAND_H#defineMY_RAND_HclassMyRand{public:MyRand();intget_rand()const;private:staticunsignedintseed_base;};#en

c++ - 为什么我在从 time(NULL) 播种随机数生成器时收到可能丢失数据的警告?

我正在学习vector并编写了一些代码来选择随机数,我可以用它来在荷兰购买彩票。但是尽管它运行了,编译器警告我“从‘time_t’转换为‘unsignedint,可能丢失数据’”。谁能找出造成这种情况的原因?我什至没有在这段代码中定义任何unsignedint;据我所知,默认情况下inti是一个带符号的int。感谢您的洞察力。#include#include#include#includeusingnamespacestd;voidprint_numbers();stringprint_color();intmain(){srand(time(NULL));print_numbers(

c++ - 如何播种 randn 函数 opencv

我想播种randn函数,但我做不到。srand(time(NULL));Matmymat=Mat::zeroes(1024,1024,CV_32F);randn(mymat,0,1);它不应该给我随机垫,命名为mymat,其mean=0和variance=1?但是,它在每次运行时都提供相同的mymat。这是randn的链接它声称srand可以工作。我尝试给出不同的数字而不是时间(NULL),但它们都具有相同的输出随机数。我已经从另一台机器上检查过同样的东西,它给出了与第一台机器相同的输出。所以播种不起作用。谢谢, 最佳答案 您可以使

c++ - 播种随机数生成器 C++

这个问题在这里已经有了答案:HowtogeneratearandomnumberinC++?(14个答案)关闭5年前。我有两个问题。在不使用srand(time(NULL))的情况下,还有哪些其他方法可以在C++中为伪随机数生成器提供种子?我问第一个问题的原因。我目前使用时间作为生成器的种子,但生成器返回的数字始终相同。我很确定原因是因为存储时间的变量在某种程度上被截断了。(我有一条警告消息说,“隐式转换失去整数精度:'time_t'(又名'long')到'unsignedint')我猜这告诉我本质上我的种子要到明年才会改变发生。出于我的目的,使用时间作为我的种子会工作得很好,但我不知

c++ - 熵和并行随机数生成器播种

我有一个循环,我在其中向某些点添加噪声;这些后来被用作一些统计测试的基础。涉及的数据集非常大,所以我想使用openMP将其并行化以加快处理速度。当我想要多个PRNG时,问题就出现了。我有自己的基于NR模方法(我认为是rand4)的PRNG类,但我不确定如何正确播种PRNG以确保适当的熵通常我会做这样的事情prng.initTimer();但是如果我有一组prng,每个工作线程一个,那么我不能简单地在每个实例上调用initTimer——计时器可能不会改变,计时器关闭可能会引入相关性。我需要防止自然相关性,而不是恶意攻击者(这是实验数据),所以我需要有一种安全的方法来为rng数组做种。我想

从UDP Tracker那里没有播种机和水ech剂来刮擦

我正在尝试为UDP跟踪器实现刮擦方法,但我一直将0个播种机/水ech子作为响应。我仍然得到2个动作,因此没有报告任何错误。我在这里进行了硬编码,只是表明它对我得到的结果没有影响。finalByteArrayOutputStreambyteStream=newByteArrayOutputStream();finalDataOutputStreamdataStream=newDataOutputStream(byteStream);dataStream.writeInt(connectResponse.get("connectionId0"));dataStream.writeInt(conne