小编Dhr*_*goi的帖子

RandomGenerator (L32X64MixRandom) 的默认算法每次都会生成相同的数字

RandomGenerator 的默认算法即。从 JDK 18(自 17 起可用)开始,L32X64MixRandom 每次在单独调用时都会生成相同的数字。

jshell> java.util.random.RandomGenerator.getDefault().nextInt(100,999)
$10 ==> 526

jshell> java.util.random.RandomGenerator.getDefault().nextInt(100,999)
$11 ==> 526

jshell> java.util.random.RandomGenerator.of("L32X64MixRandom").nextInt(100, 999)
$14 ==> 526

jshell> java.util.random.RandomGenerator.of("L32X64MixRandom").nextInt(100, 999)
$15 ==> 526
Run Code Online (Sandbox Code Playgroud)

javadoc 听起来也没有任何特别的警告:

返回在指定原点(包括)和指定边界(不包括)之间伪随机选择的 int 值。

实现要求:默认实现检查origin 和bound 是否为正整数。然后调用 nextInt(),将结果限制为大于或等于原点且小于界限。如果bound是2的幂,那么限制就是一个简单的掩码操作。否则,通过调用 nextInt() 重新计算结果,直到结果大于或等于 origin 且小于bound。

而其他算法(包括遗留算法)似乎具有可感知的随机性水平,例如。

jshell> java.util.random.RandomGenerator.of("Random").nextInt(100,999)
$7 ==> 451

jshell> java.util.random.RandomGenerator.of("Random").nextInt(100,999)
$8 ==> 633

jshell> java.util.random.RandomGenerator.of("L64X128MixRandom").nextInt(100, 999)
$12 ==> 570

jshell> java.util.random.RandomGenerator.of("L64X128MixRandom").nextInt(100, 999)
$13 ==> 844
Run Code Online (Sandbox Code Playgroud)

默认选择的这种程度的决定论是否有原因?

编辑:行为。流非常相似,初始值似乎总是相同的

jshell> java.util.random.RandomGenerator.getDefault().ints(100,999).limit(5).toArray()
$22 ==> int[5] { 526, 860, 258, 558, 820 }

jshell> …
Run Code Online (Sandbox Code Playgroud)

java openjdk-17

6
推荐指数
1
解决办法
747
查看次数

偶尔的JVM在本机代码深处从FileDialog.open()崩溃

我目前面临的是我们在Windows 2008服务器R2上的Citrix环境中运行的一些Eclipse应用程序中的异常访问冲突.

调用开始org.eclipse.swt.widgets.FileDialog.open(),调用方法org.eclipse.swt.internal.win32.OS.GetSaveFileNameW然后转到本机库.它失败,并# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x68931bab, pid=9208, tid=7616siginfo: ExceptionCode=0xc0000005, ExceptionInformation=0x00000008 0x68931bab

分析创建的minidump,我结束了 thumbcache.dll

thumbcache.dll!CThumbnailCache::CThumbnailCache(int)    Unknown
thumbcache.dll!ThumbnailCacheCreateInstance(int,struct _GUID const &,void * *)  Unknown
thumbcache.dll!CThumbCacheClassFactory::CreateInstance(struct IUnknown *,struct _GUID const &,void * *) Unknown
ole32.dll!CServerContextActivator::CreateInstance(IUnknown * pUnkOuter, IActivationPropertiesIn * pInActProperties, IActivationPropertiesOut * * ppOutActProperties) Line 1000  C++
ole32.dll!ActivationPropertiesIn::DelegateCreateInstance(IUnknown * pUnkOuter, IActivationPropertiesOut * * ppActPropsOut) Line 1917    C++
ole32.dll!CApartmentActivator::CreateInstance(IUnknown * pUnkOuter, IActivationPropertiesIn * pInActProperties, IActivationPropertiesOut * * ppOutActProperties)    C++
ole32.dll!CProcessActivator::CCICallback(unsigned long dwContext, IUnknown * pUnkOuter, ActivationPropertiesIn …
Run Code Online (Sandbox Code Playgroud)

java eclipse windows swt eclipse-rcp

1
推荐指数
1
解决办法
895
查看次数

标签 统计

java ×2

eclipse ×1

eclipse-rcp ×1

openjdk-17 ×1

swt ×1

windows ×1