草庐IT

当我设置种子时,Java random 总是返回相同的数字?

我需要有关我正在创建的随机数生成器的帮助。我的代码如下(在一个名为numbers的类中):publicintrandom(inti){Randomrandnum=newRandom();randnum.setSeed(123456789);returnrandnum.nextInt(i);}当我从另一个类调用这个方法时(为了生成一个随机数),它总是返回相同的数字。例如,如果我要这样做:System.out.println(numbers.random(10));System.out.print(numbers.random(10));它总是打印相同的数字,例如55.我该怎么做才能打印两

java - 为什么 Random 类不是静态的?

在Java中,我们有静态类Math。您不需要创建它的对象,所以它是静态的。另一个是随机类。我们不需要创建它的实例,那为什么它也不是静态的呢?我的类(class)我经常使用随机数,当必须在每个类(class)中创​​建字段rand以生成随机数时,我会很生气。那么为什么它不是静态的呢? 最佳答案 Random类有状态,包括它在序列中的位置,因为产生的值并不是真正随机的,只是一个伪随机序列。这可以通过用相同的种子初始化两个实例来证明。Randoma=newRandom(123);Randomb=newRandom(123);for(int

java - 如何从 Java 中的 Random 中获取种子?

我正在为某个对象创建一个深度克隆。该对象包含一个Random。从Random中检索种子是一种好习惯吗?如果是这样,怎么做?没有Random.getSeed()。 最佳答案 获取种子的一种更简单的方法是生成一个并将其存储为种子。我正在将这种方法用于游戏,并希望让玩家可以选择生成完全相同的世界,如果他也愿意的话。因此,首先我创建一个没有种子的Random对象,然后让该对象生成一个随机数并在另一个随机对象中使用它作为种子。每当玩家想要关卡的种子时,我都会将它存储在某个地方。默认情况下,游戏仍然是随机的。Randomrand=newRand

java - 从 Java 8 开始有什么理由写 `new Random()` 吗?

出于某种原因,我曾经认为java.util.Random是线程不安全的,例如HashMap或BitSet,并且Math.random()被实现为使用synchronizedblock包装对Random的访问,或ThreadLocalRandom.current().nextDouble().其实java.util.Randomisthread-safe(通过原子)。因此,要点:即使我需要在单个线程中进行一些随机输入,使用ThreadLocalRandom也是有意义的,因为内部没有原子读写,编译为锁定指令并发出内存屏障。此外,由于Java8,ThreadLocalRandom本质上是一个

random - 使用 kotlin 流从列表中获取随机项

如何以简单明了的方式从列表中获取随机项。例如:如果我想从这个列表中得到一个偶数随机数。vallist=listOf(1,2,3,4,5,6,7,9).filter{it%2==0}注意:我知道在java中有一些类似的答案可以解决这个问题,但我认为我们可以在kotlin中有更简洁的方式。 最佳答案 Kotlin1.3及更高版本:Kotlin1.3现在可用于多平台随机数生成器!你可以这样使用它:importkotlin.random.Randomfunmain(){println(Random.nextBoolean())println

docker - 没有足够的熵来支持在 boot2docker 中运行的 docker 容器中的/dev/random

虚拟化Linux系统中的熵用完似乎是一个常见问题(例如/dev/randomExtremelySlow?、Gettinglinuxtobuffer/dev/random)。尽管使用了硬件随机数生成器(HRNG),但使用了熵收集守护进程,如HAVEGED经常被建议。但是熵收集守护进程(EGD)不能在Docker容器内运行,它必须由主机提供。对于基于Ubuntu、RHEL等Linux发行版的docker主机,使用EGD效果很好。让这样的守护进程在基于TinyCoreLinux(TCL)的boot2docker中工作似乎是另一回事。虽然TCL有一个扩展机制,一个熵收集守护进程的扩展doesn

javascript - Meteor Collection 文档 ID : Random. id() 或 Meteor.Collection.ObjectID()

当我将文档插入Meteor集合时,它们有一个_id,格式为Random.id:Random.id();//"wjQyQ6sGjzvNMDLiJ"当我将文档直接从MongoDB插入到相同的集合中时,它们有一个Meteor.Collection.ObjectID形式的_id。newMeteor.Collection.ObjectID();//LocalCollection._ObjectID{_str:"b105582bc495617542af18e9"…}为什么我的应用使用Random.id?这是旧设置吗?我创建应用时的Meteor版本:meteor@1.1.4meteor-platfo

random - 去 rand.Intn 相同的数字/值

谁能告诉我为什么这里是Go示例:https://tour.golang.org/basics/1总是为rand.Intn(10)返回相同的值? 最佳答案 2个原因:你必须初始化全局Source由rand.Intn()使用和rand包的其他函数使用rand.Seed().例如:rand.Seed(time.Now().UnixNano())查看DifficultywithGoRandpackage的可能重复项.引用rand的包文档:Top-levelfunctions,suchasFloat64andInt,useadefaultsh

random - 在 Go 中生成范围内的随机数

math/rand中的所有整数函数生成非负数。rand.Int()int//[0,MaxInt]rand.Int31()int32//[0,MaxInt32]rand.Int31n(nint32)int32//[0,n)rand.Int63()int64//[0,MaxInt64]rand.Int63n(nint64)int64//[0,n)rand.Intn(nint)int//[0,n)我想生成[-m,n)范围内的随机数。换句话说,我想生成正数和负数的混合。 最佳答案 我在GoCookbook找到了这个示例,相当于rand.Ra

random - 在 Go 中生成随机数

我试图在Go中生成随机数(整数),但无济于事。我在crypto/rand中找到了rand包,这似乎是我想要的,但我无法从文档中得知如何使用它。这就是我现在正在尝试的:b:=[]byte{}something,err:=rand.Read(b)fmt.Printf("something=%v\n",something)fmt.Printf("err=%v\n",err)但不幸的是,这总是输出:something=0err=有没有办法解决这个问题,以便它实际生成随机数?或者,有没有办法设置生成的随机数的上限? 最佳答案 根据您的用例,另