如何在Java中创建一个满足系统长度和字符集要求的随secret码?我必须创建一个长度为10-14个字符且至少包含一个大写字母、一个小写字母和一个特殊字符的随secret码。不幸的是,一些特殊字符太特殊而无法使用,所以我不能只使用打印的ASCII。本网站上的许多示例生成的随secret码或sessionkey在字符中没有足够的熵,或者在业务环境中没有像上面给出的那样的现实要求,所以我问更尖锐的问题以获得更好的答案.我的字符集,标准美式键盘上除空格外的每个特殊字符:A-Za-z0-9~`!@#$%^&*()-_=+[{]}\|;:'",/? 最佳答案
我创建一个随机流Randomrandom=newRandom();Streamboxed=random.ints(0,100000000).boxed();但我需要生成的数字中有60%为0,而其余数字可以是真正随机的。我该怎么做?编辑:我只需要0-100之间的正数1200900112 最佳答案 我假设OP希望生成的值中大约60%为零,其余大约40%为1-100(含)范围内的(伪)随机值。JDK库可以轻松生成N个不同值的流。由于[1,100]范围内有100个值,这代表了输出的40%,因此需要有150个值映射到零以覆盖剩余的60%。因此
有没有办法在Java中生成8个字符长的随机且唯一的字符串?Stringid=getRandomString();然后id将是例如wf41Av5g 最佳答案 您可以使用RandomStringUtilsimportorg.apache.commons.lang.RandomStringUtils;publicclassRandomStringUtilsTrial{publicstaticvoidmain(String[]args){System.out.print("8charstring>>>");System.out.printl
我找到了很多关于SecureRandom的例子看起来像这样的类:Randomrandom=newSecureRandom();intrandomInteger=random.nextInt();或者像这样:try{Randomrandom=SecureRandom.getInstance("SHA1PRNG");intrandomInteger=random.nextInt();}catch(NoSuchAlgorithmExceptionexception){//...}或类似的东西。然而,SecureRandom()和SecureRandom.getInstance(String)
Random类的nextLong()方法的Javadoc指出BecauseclassRandomusesaseedwithonly48bits,thisalgorithmwillnotreturnallpossiblelongvalues.(Randomjavadoc)实现是:return((long)next(32)我的看法如下:要创建任何可能的long,我们应该以相等的可能性生成任何可能的64位位模式。假设对next(int)的调用给了我们32个随机位,那么这些位的串联将是一个64个随机位的序列,因此我们以相等的可能性生成每个64位模式。因此所有可能的长值。我想编写javadoc的
我正在使用下面的函数生成UUIDUUID.randomUUID().toString()在生产环境中,我们有50多台服务器(应用服务器——每台服务器都是一个独立的JVM),对于到达这些服务器的请求,作为第一步,我们生成一个UUID,它本质上是唯一标识事务的。我们观察到,在服务器6和服务器11中,生成的UUID每天至少匹配10到15条消息,这很奇怪,因为给定负载,即每天大约100万个事务,这些UUID在内部重复同一天很奇怪。这是我们目前所做的验证了应用程序日志-我们没有发现任何可疑的东西,所有日志都正常尝试在具有类似生产负载和50多台服务器的测试环境中复制此问题-但这在测试环境中没有发生
即,它永远不会使用某些特定的upperBound参数连续生成超过16个偶数:Randomrandom=newRandom();intc=0;intmax=17;intupperBound=18;while(c在此示例中,代码将永远循环,而当upperBound为16时,它会快速终止。这种行为的原因可能是什么?该方法的javadoc中有一些注释,但我未能理解它们。UPD1:代码似乎以奇数上限终止,但可能卡在偶数上限UPD2:我修改了代码以按照评论中的建议捕获c的统计信息:Randomrandom=newRandom();intc=0;longtrials=10){while(c0){in
我不确定我是否能正确表达这个问题,但就是这样......我想编写一个示例,其中小点具有它们移动所依据的速度-而且,还有一个随机运动叠加到“正确”运动上。使用下面的Processing代码,我得到以下动画:右边的点应该朝向右下角,我对它的行为没意见。问题是左边的点,它应该是“静态的”——所以它只会显示“就地”的“随机”运动;然而,正如动画.gif所示,它最终往往会偏离其原始位置一段距离。随机速度计算如下:this.randspeed.set(random(0,1)-0.5,random(0,1)-0.5);我猜想random(0,1)-0.5不会给我一个以零为中心(或收敛?到)零的类似高
这个问题是关于ThreadLocalRandom在OpenJDK1.8.0版本中的实现。ThreadLocalRandom提供了一个每线程随机数生成器,没有Random强加的同步开销。最明显的实现(IMO)应该是这样的,它似乎可以保持向后兼容性而不会太复杂:publicclassThreadLocalRandomextendsRandom{privatestaticfinalThreadLocaltl=ThreadLocal.withInitial(ThreadLocalRandom::new);publicstaticThreadLocalRandomcurrent(){return
我目前正在为自己开发一个小项目,我正在利用它来熟悉单元测试和维护适当的文档。我有一个代表一副纸牌的Deck类(它非常简单,老实说,我可以确定它无需单元测试就可以工作,但就像我说的那样习惯使用单元测试),它有一个shuffle()方法,可以改变牌组中牌的顺序。实现非常简单,肯定会起作用:publicvoidshuffle(){Collections.shuffle(this.cards);}但是,我该如何为这个方法实现单元测试。我的第一个想法是在调用shuffle()后检查牌组的顶牌是否不同,但当然有可能是相同的。我的第二个想法是检查卡片的整个顺序是否已经改变,但它们可能仍然处于相同的顺