Java的好种子——构建迷宫

Java的好种子——构建迷宫,java,random,Java,Random,我正在尝试制作一个程序来构建一个迷宫(Java中的一个经典练习),我想使用我的方法来生成迷宫,以接收用于生成迷宫的任意数生成器的种子。这是必需的,因为我希望程序每次输入相同的种子时生成相同的迷宫。 但是,对于一些种子值,更多的值似乎比其他值具有更大的可能性 我的意思是,假设我用一个给定的种子设置一个随机对象,并用它生成[0,4]之间的整数,这被用作构建迷宫的标准。生成的序列非常独特,迷宫太容易了。如果我不设置任何种子,就生成了一个好的迷宫。 整数部分只是一个例子。我可以使用一个统一的函数,将其划

我正在尝试制作一个程序来构建一个迷宫(Java中的一个经典练习),我想使用我的方法来生成迷宫,以接收用于生成迷宫的任意数生成器的种子。这是必需的,因为我希望程序每次输入相同的种子时生成相同的迷宫。 但是,对于一些种子值,更多的值似乎比其他值具有更大的可能性

我的意思是,假设我用一个给定的种子设置一个随机对象,并用它生成[0,4]之间的整数,这被用作构建迷宫的标准。生成的序列非常独特,迷宫太容易了。如果我不设置任何种子,就生成了一个好的迷宫。 整数部分只是一个例子。我可以使用一个统一的函数,将其划分为4个区域:[0,0,25],[0,25,0.5],[0.5,0.75],[0.75,1)

有没有办法修改该种子,使随机数生成器的行为对同一种子相同,并保持这些数字的良好“混合”状态?我的意思是,如何生成相同的数字设置种子,使它们均匀分布在此间隔内


谢谢!

您可以尝试此方法以确保数字是“随机的”,但均匀分布在[0,1]、[1,2]、[2,3]和[3,4]上:

Random Random=新随机(种子);
int count=200;//或者另一个数字,您需要多少
列表编号=新阵列列表(计数);
for(int i=0;i
您是否断言任何明确提供的种子将生成简单迷宫,或者您尝试的特定种子会生成简单迷宫?任何提供的种子将生成简单迷宫您是否可以共享用于生成随机数的代码?我使用的是随机rnd=新随机(种子);当没有提供种子时,迷宫看起来很好。我的意思是从生成器中检索数字。您尝试了多少种子?每次运行程序或它具有确定性行为时,shuffle不会给我不同的结果吗?它不是确定性的,您可以检查
集合的源代码。shuffle
。您可以创建它通过将
random
作为第二个参数传递来确定。@yshavit我希望它每次都生成相同的序列,但均匀分布。@Giiovanna是的,那就可以了!如果您为每个方法设置种子,这意味着您每次都从零开始序列。而不是设置一个(例如)
[4,1,1,3,1,2,4…][/code>然后说“给我下一个数字”,“给我下一个数字”,你正在创建序列并读取相同的数字:(1)“给我第一个从
[4,1,1,3…][/code>”(2)“好的,现在给我第一个从
[4,1,1,3…][/code>”,(3)好的,现在给我第一个从
[4,1,1,3…]
“等等。
Random random = new Random(seed);
int count = 200; // or another number, just how many you need
List<Float> numbers = new ArrayList<Float>(count);
for (int i = 0; i < count; i++) {
    numbers.add(random.nextFloat() + (i % 4));
}
Collections.shuffle(numbers);