Java-Gaming.org Hi !
 Featured games (90) games approved by the League of Dukes Games in Showcase (753) Games in Android Showcase (228) games submitted by our members Games in WIP (842) games currently in development
 News: Read the Java Gaming Resources, or peek at the official Java tutorials
Pages: [1]
 ignore  |  Print
 Random seed question...  (Read 2704 times) 0 Members and 1 Guest are viewing this topic.
gbeebe

Senior Devvie

Medals: 5
Projects: 1

 « Posted 2011-09-28 03:09:38 »

The game I'm working on has a random 2d level generator.  The subrutine, that creates the level, accepts a (long) argument that if not zero, uses that value as the random seed.  I have some numbers (seeds) that create some interesting levels.  So when I use the number zero, it doesn't set the seed, and just leaves the "default" seed alone.  I have seen some pretty interesting levels generated this way as well.  My question is:  Is there a way to get the current seed that the random generator is using (when I have not specifically set one)?  I believe if I could get this number then I could virtually use this as the level ID number and allow players to use the same "random" level over and over.
gbeebe

Senior Devvie

Medals: 5
Projects: 1

 « Reply #1 - Posted 2011-09-28 03:59:21 »

Solution:
After giving it some thought, I came up with a work-around.

 1  2  3  4  5  6  7  8  9 `Random rndm = new Random();              if (seed != 0)       {          rndm.setSeed(seed);       } else {          seed = rndm.nextLong();          rndm.setSeed(seed);       }`

If no seed (not zero) is provided, I just randomly randomize the seed.
The subrutine is now a function that returns the seed, so I can store it in a value, so the players can request the "ID" of the level.
oNyx

JGO Coder

Medals: 2

pixels! :x

 « Reply #2 - Posted 2011-09-28 09:07:51 »

Replace:

seed = rndm.nextLong();

with:

seed = System.currentTimeMillis();

If you want the default behavior.

theagentd
 « Reply #3 - Posted 2011-09-28 10:30:31 »

oNyx's one is the "default" one used by Random, but Gbeebe's one is "better". With the default one, you're losing 40 years worth of maps! xD

Myomyomyo.
Cero
 « Reply #4 - Posted 2011-09-28 10:40:44 »

oNyx's one is the "default" one used by Random, but Gbeebe's one is "better". With the default one, you're losing 40 years worth of maps! xD

lol =D

btw if you just don't set a seed, isn't it default behavior that it uses none/random
not sure about the Random class, might confuse it with some C++ class

theagentd
 « Reply #5 - Posted 2011-09-28 12:43:17 »

Minecraft requires a seed for the world generator. It uses System.currentTimeMillis() if I'm not mistaken.
From http://www.minecraftwiki.net/wiki/Seed_(Level_Generation):
Quote
If you leave the seed field blank, the game will use the time (computer clock) as a seed. Leaving the seed field blank will not produce the same map every time. Using seed 0 in singleplayer will also be ignored, as though it were left blank.

Myomyomyo.
Cero
 « Reply #6 - Posted 2011-09-28 13:45:23 »

Minecraft requires a seed for the world generator. It uses System.currentTimeMillis() if I'm not mistaken.
From http://www.minecraftwiki.net/wiki/Seed_(Level_Generation):
Quote
If you leave the seed field blank, the game will use the time (computer clock) as a seed. Leaving the seed field blank will not produce the same map every time. Using seed 0 in singleplayer will also be ignored, as though it were left blank.

I just thought that if you dont even call .setSeed(seed);, using System.currentTimeMillis() or something similar is the default behavior.

theagentd
 « Reply #7 - Posted 2011-09-28 15:26:50 »

 1  2  3  4  5  6  7 `public Random() {    this(seedUniquifier() ^ System.nanoTime());}public Random(long seed) {    this.seed = new AtomicLong(initialScramble(seed));}`

It also uses some fancy functions to make the seed "more random". Doesn't work that well IMHO. Try feeding it the values 0-100 and generating a random value, and you'll see what I mean...

Myomyomyo.
Pages: [1]
 ignore  |  Print

 ivj94 (583 views) 2018-03-24 14:47:39 ivj94 (48 views) 2018-03-24 14:46:31 ivj94 (374 views) 2018-03-24 14:43:53 Solater (61 views) 2018-03-17 05:04:08 nelsongames (108 views) 2018-03-05 17:56:34 Gornova (150 views) 2018-03-02 22:15:33 buddyBro (693 views) 2018-02-28 16:59:18 buddyBro (91 views) 2018-02-28 16:45:17 xxMrPHDxx (493 views) 2017-12-31 17:17:51 xxMrPHDxx (733 views) 2017-12-31 17:15:51
 Java Gaming Resourcesby philfrei2017-12-05 19:38:37Java Gaming Resourcesby philfrei2017-12-05 19:37:39Java Gaming Resourcesby philfrei2017-12-05 19:36:10Java Gaming Resourcesby philfrei2017-12-05 19:33:10List of Learning Resourcesby elect2017-03-13 14:05:44List of Learning Resourcesby elect2017-03-13 14:04:45SF/X Librariesby philfrei2017-03-02 08:45:19SF/X Librariesby philfrei2017-03-02 08:44:05
 java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org