首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

伪随机数

Random random伪随机数类在 java.util 包下,是最常用随机数生成器,其使用线性余公式来生成随机数,所以才说是伪随机。...该类实例是线程安全,多线程并发使用可能会遇到争用问题,这时可用 ThreadLocalRandom 来解决这个问题,此外还有 SecureRandom 、SplittableRandom 随机生成器...构造方法与常用方法 类型 名字 解释 Random() 默认构造函数 Random(long seed) 有参构造,用种子创建伪随机生成器 int nextInt 返回生成器中生成表序列中下一个伪随机数...Congruential Generators of // Different Sizes and Good Lattice Structure", 1999 // 翻译:不同大小结构良好线性余生成元表...seed.compareAndSet(oldseed, nextseed)); // 改变值 return (int)(nextseed >>> (48 - bits)); // 可能这些位运算就是线性余把

1.1K20

Secure Randomness in Go 1.22

返回语句中AND清除了符号位以确保结果为正。 此函数是线性余生成器(LCGs)[6]一般类别的一个实例,Knuth在《计算机程序设计艺术》第二卷第3.2.1节中对其进行了分析。...Go 1生成器 Go 1 math/rand 中使用成器是所谓线性反馈移位寄存器[8]一个实例。...论文中详尽分析可能让人一眼难以注意到这些生成器其实非常简单:PCG是一个经过后处理128位LCG(线性余生成器)。...使用 Go 1.20,这个错误是一个严重安全问题,值得详细调查以了解损害程度。密钥被用在哪里?密钥是如何暴露?是否有其他随机输出暴露,可能让攻击者推导出密钥?等等。...https://www.tuhs.org/pipermail/tuhs/2024-March/029587.html [6] 线性余生成器(LCGs): https://en.wikipedia.org

17710
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何攻破加密算法

    · Mix columns对矩阵中字节进行一些数据操作和线性变换,这样矩阵中每个字节就都变了。 ? 上面4个步骤可以看做是一轮。...必须要理解和识别每个加密算法以及所起作用。因为攻破一个错误使用加密算法就可以连环攻破整个加密方案。 ?...如果输入函数输入是一样,那么输出结果也应该是一样。对随机数生成器来说,只要有足够大输入来生成随机数值就可以进行推断了。比如,一些弱随机数生成器利用日期作为输入。...如果加入了足够多参数,或者参数可能性比较多的话,那么最终需要暴力破解次数会非常多,多到可能用尽你余生时间都不够。 ? 解密实践 下面是一些成功破解勒索软件例子和所使用方法。...也能给出一个攻击方向和如何攻破加密。比如,上面列表中Cerber就是利用服务端漏洞进行攻击,虽然加密本身是很强,但是也可以攻击侧信道来创建解密器。

    1.5K41

    人类对随机数探索:如何才能生成一个均匀随机数列

    依照这一想法,数学家D.H.Lehmer在1949年提出了线性余生成器(LCG)。...它完美地平衡了性能和随机数质量,并且经受住了时间考验。它基于线性反馈移位寄存器(LFSR)思想,产生一个循环周期非常长的确定性序列。近期应用中,其循环周期可达到 2¹⁹⁹³⁷− 1。...梅森旋转随机数生成器并不是一种 CSPRNG,因为如果可以给定大量先前序列样本,后面的数字可以预计出来。...没有人知道这个问题答案。我猜某些地方某些人一定知道,可是他们也一定不会公开。 采用硬件随机数生成器 PEDOUBLER 生成随机数。...REDOUBLER和无限噪声 TRNG是两个开源硬件随机数生成器,链接中给出他们 Github 源码地址。

    1.7K70

    谈谈随机数使用

    所以即使概率看起来不太对,也可以安慰自己说,其实是统计数据量不够。但有时候真的是因为我们误用了随机函数。 在《计算机程序设计艺术》卷2中,详细介绍了线性余序列生成算法。...下面就以线性余算法为例,来分析一下,为什么随机函数还有可能被误用,他原本不就是随机么?...我们来看一下线性余(LCG)伪随机算法定义: Nj+1 = (A*Nj + B) (mod M)(j, j+1为下标) 其中A,B,M为线性余序列生成常数。...A,B是正整数 通俗点来讲就是,线性余生[0,M)个数在统计学意义上,是等概率出现。也就是说在足够多次随机以后,他们出现次数是相同。 咋一看,感觉上面的代码好像没啥问题。...根本原因是,除了有一个伪随机序列之外,还有一个真随机事件,即玩家开宝箱时机选择。 用软件工程的话来说,宝箱1和宝箱2通过一个全局变量(同一个线性余序列)耦合在一起了,他们不是正交

    71110

    硬核 - Java 随机数相关 API 演进与思考(上)

    线性余算法 首先是最常见随机数算法:线性余(Linear Congruential Generator)。...线性反馈移位寄存器算法 线性反馈移位寄存器(Linear feedback shift register,LFSR)是指给定前一状态输出,将该输出线性函数再用作输入移位寄存器。...还有一点比较有意思是,线性余算法并不可逆,我们只能通过 X(n) 推出 X(n + 1),而不能根据 X(n + 1) 直接推出 X(n)。...这点正是线性余算法无法做到,他序列无论怎么修改 SEED 也是确定,而我们有不能随意更改算法中 A、B、C 值,因为可能会导致无法遍历到所有数字,这点之前已经说过了。...LXM 算法 这是在 Java 17 中引入算法 LXM 算法(L 即线性余,X 即 Xoshiro,M 即 MurMurHash)实现较为简单,结合线性余算法和 Xoshiro 算法,之后通过

    78320

    自制头像生成器_dc动漫头像女

    二、生成器与判别器设计 生成器 相关参量, 噪声向量z维度:100 标签向量y维度:10(如果有的话) 生成器features控制参量gf标量值:64 生成器features控制参量gfc标量值...-转置卷积-> 64,64,3 含标签训练,所谓concat实际就是把features和y进行拼接, 新参量: z=110,yb = 1,1,10 110 -线性层-> 1024...1024 -concat-> 1034 -线性层-> 1 三、结果查看 生成器损失 判别器real损失 判别器fake损失 判别器总损失 从训练过程中来看,经历了初期下降之后,几个loss...值均会在波动中维持一个动态平衡,而GANloss值并不能直接反应训练结果,所以我们需要直接看输出图。...本次实验中一功运行了23个epoch,这里给出每个epoch开始输出以及最后一张输出,以供参考: 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/

    1K30

    教程 | 无需反向传播深度学习:DeepMind合成梯度

    这使得(大部分情况下)单个层独立学习,提升了训练速度。 ? 上图(论文中)对于所发生事情(从左到右)给出了非常直观解释。圆角正方形是层,菱形物体是(我称其为)合成梯度生成器。...所以,现在我们知道合成梯度是由另一个神经网络训练,该神经网络基于某一层输出给出相应梯度预测。...论文还显示,任何其他相关信息均可以被用作合成梯度生成器网络输入,但在论文中,好像只有该层输出用于正常前馈网络。此外,论文甚至指出可以使用单线性层作为合成梯度生成器。太厉害了,我们要尝试一下。...权重是我们用于从输入到输出线性变换矩阵(就像普通线性层),根据需要,我们也可以包含一个非线性输出函数,它将非线性放置在我们输出网络中。...最后,它反向传播错误并传入至上一层,并将其返回。 update 可能是最简单方法。它只需要在权重输出中使用导数,并使用它来进行权重更新。

    1.3K100

    keras doc 5 泛型与常用层

    输入数据,与fit一样,是numpy array或numpy arraylist y:标签,numpy array batch_size:整数,含义fit同名参数 verbose:含义fit同名参数...model.metrics_names将给出list中各个值含义。...例如,该函数允许我们在CPU上进行实时数据提升,同时在GPU上进行模型训练 函数参数是: generator:生成器函数,生成器输出应该为: 一个形如(inputs,targets)tuple...verbose:日志显示,0为不在标准输出输出日志信息,1为输出进度条记录,2为每个epoch输出一行记录 validation_data:具有以下三种形式之一 生成验证集成器 一个形如(inputs...(input_dim,output_dim)线性输出最大值为输出

    1.7K40

    Deep learning基于theanokeras学习笔记(1)-Sequential模型

    Sequential模型,顾名思义,就是多个网络层线性堆叠 建立模型有两种方式:一是向layer添加list方式,二是通过.add()方式一层层添加(一个add为一层),具体可见如下代码 #引入...:含义fit同名参数,但只能取0或1 #sample_weight:numpy array,含义fit同名参数 本函数返回一个测试误差标量值(如果模型没有其他评价指标),或一个标量list...model.metrics_names将给出list中各个值含义 ---------- #predict predict(self, x, batch_size=32, verbose=0)...,生成器输出应该为: 一个形如(inputs,targets)tuple 一个形如(inputs, targets,sample_weight)tuple。...#verbose:日志显示,0为不在标准输出输出日志信息,1为输出进度条记录,2为每个epoch输出一行记录 #validation_data:具有以下三种形式之一 生成验证集成器

    1.4K10

    前端面试题合集,你还在抱怨收不到offer?

    2.3、第三套面试题 ---- 用尽可能多方法找出数组中重复出现过元素 例如:[1,2,4,4,3,3,1,5,3] 输出:[1,3,4] 作者补充:若给出多种方式,请分别给出他们复杂度 给定一些文档...并给出算法 时间/空间复杂度。 2.6、第六套面试题 ---- 请写出超链接顺序或者你在初始样式中链接方法。...不用循环,创建一个长度为 100 数组,并且每个元素值等于它下标。 当项目的某个模块发生问题了,你是怎么定位错误?你常用测试工具是什么? HTML5 中如何嵌入音频?...源与目标资源位于域之下,JQuery 中 JSONP 是异步进行么?跨域时是异步么? 目前熟练使用前端框架有哪些?...2.14、第十四套面试题 ---- 请写出代码输出结果。 请写出代码输出结果。 请写出代码输出结果。 最后再送大家一句话 往事不足够,余生不强求。

    71010

    keras doc 4 使用陷阱与模型

    卷积核与所使用后端不匹配,不会报任何错误,因为它们shape是完全一致,没有方法能够检测出这种错误。 在使用预训练模型时,一个建议是首先找一些测试样本,看看模型表现是否与预计一致。...输入数据,与fit一样,是numpy array或numpy arraylist y:标签,numpy array batch_size:整数,含义fit同名参数 verbose:含义fit同名参数...model.metrics_names将给出list中各个值含义。...例如,该函数允许我们在CPU上进行实时数据提升,同时在GPU上进行模型训练 函数参数是: generator:生成器函数,生成器输出应该为: 一个形如(inputs,targets)tuple...verbose:日志显示,0为不在标准输出输出日志信息,1为输出进度条记录,2为每个epoch输出一行记录 validation_data:具有以下三种形式之一 生成验证集成器 一个形如(inputs

    1.2K10

    关于强化学习(2)

    时间依赖变量 ? 联系起来, 对应 ? 以时间为索引集合 ? , 其中 ? 中变量并不依赖于时间, 在 ? 中 ? 就对应 ? 中 ? . 给出参数 ? 增量形式: ?...需要注意是baseline是独立于其他变量和输出, 我们称具有以上格式算法为段落式REINFORCE算法 给出完整权值修改公式: ?...多参数分布REINFORCE REINFORCE框架一个有趣应用就是对于单元学习算法发展决定了它们随机标量输出, 输出来自于多参数分布而不是使用半线性随机单元单参数分布....我们只需要将无偏估计进行反向传播即可 7.2 通过随机数字生成器反向传播 考虑一个随机线性单元, 并且假设有这么一个函数 ? , ? 对输出 ?...线性函数的话. 然而, 如果输出是一个随机数生成器, 可以被写成一个参数可微函数, 那么我们就可以利用确定性计算. 考虑一个正态随机数生成器, 比如高斯单元, 输出 ? 根据 ? 和 ?

    59630

    使用GAN生成逼真的人脸

    造成这种攻击原因是,大多数机器学习模型都是从有限数据中学习,这是一个巨大缺点,因为它很容易过度拟合。同样,输入和输出之间映射几乎是线性。...尽管看起来各个类之间分隔边界似乎是线性,但实际上它们是由线性组成,即使特征空间中某个点微小变化也可能导致数据分类错误。 GAN如何工作?...此更大模型将用于使用鉴别器模型计算输出和误差来训练生成器模型权重。区分模型是单独训练,因此,在此较大GAN模型中,模型权重被标记为不可训练,以确保仅更新生成器模型权重。...这个更大GAN模型将潜在空间中一个点作为输入,使用生成器模型生成图像,将其作为输入馈送到鉴别器模型,然后输出或分类为真实或伪造。 由于鉴别器输出是S形,因此我们使用二进制交叉熵来表示损失。...这种进展为GAN整体收敛提出了一个问题:随着时间流逝,鉴别器反馈意义逐渐减弱。如果GAN继续进行训练,直到判别器给出完全随机反馈,则生成器将开始根据垃圾反馈进行训练,其质量可能会下降。

    3.1K20

    读《图解密码技术》(三):密钥、随机数和应用技术

    PBE 加密可以用下图来表示: 主要有三个步骤: 生成 KEK 首先,通过伪随机数生成器生成一个被称为盐(salt)随机数。然后,将盐和口令一起输入单向散列函数,输出结果就是 KEK。...具体伪随机数生成器 具体伪随机数生成器有很多,书中介绍了五种:杂乱方法、线性余法、单向散列函数法、密码法、ANSI X9.17。...线性余法 线性余法就是将当前伪随机数值乘以 A 再加上 C,然后将除以 M 得到余数作为下一个伪随机数。其中,A、C、M都是常量,且 A 和 C 需要小于 M。...C 语言库函数 rand,以及Java Random 类,都采用了线性余法。线性余法并不具备不可预测性,因此不可以用于密码技术。...当协议中途发生错误时,就会通过警告协议传达给对方。警告协议负责在发生错误时将错误传达给对方。如果没有发生错误,则会使用应用数据协议来进行通信。应用数据协议用于和通信对象之间传送应用数据。

    1.8K10
    领券