wesnoth-wiki-changes
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Wesnoth-wiki-changes] PseudoRandomNumberGeneration


From: wiki
Subject: [Wesnoth-wiki-changes] PseudoRandomNumberGeneration
Date: Sun, 14 Nov 2004 17:20 +0100

UserAgent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/85.8.2 
(KHTML, like Gecko) Safari/85.8
IP: 64.180.147.147
URI: http://wesnoth.slack.it/?PseudoRandomNumberGeneration
 - - - - -
Index: PseudoRandomNumberGeneration
===================================================================
RCS file: /home/wesnoth/cvsroot/wikiroot/PseudoRandomNumberGeneration,v
retrieving revision 1.8
diff -u -r1.8 PseudoRandomNumberGeneration
--- PseudoRandomNumberGeneration        14 Nov 2004 11:20:08 -0000      1.8
+++ PseudoRandomNumberGeneration        14 Nov 2004 16:20:55 -0000
@@ -5,8 +5,6 @@
  might want to do something about. (It's easy to slaughter the Skeletal Dragon 
without being attacked by the other undead.)
 .
  Shadowfury333: What exactly is this for?
-
- BTW don't forget to make new topics. (Just type the name without spaces, 
instead use Capital letters to signify the first letter in each word)
 .
  MadMax: Can you email me the code at address@hidden I'm interested to see how 
it's done.
 
@@ -138,26 +136,35 @@
  I got my pseudorandom number generation (to be referred to as PRNG) formula 
from a book by Knuth. It is as follows:
  Xn+1=(aXn + c) mod m
  That was difficult to do in code. I don't have multiplication[1] OR modulus 
in my arsenal, so I had to imitate them using while loops.
- Then, I had to choose good values for a, c, and m. Since the 'random' 
sequence always loops eventually, the duration of the loop is called the 
period. In
+ Then, I had to choose good values for a, c, and m. Since the 'random' 
sequence always loops eventually, the duration of the loop is called the period.
+In
  order to have a period of length m, the maximum, the numbers had to fill 
several conditions.
  That wasn't hard, but the numbers were at first way too small. I increased 
them. They did not fulfill my worries that the the process would be too slow,
- fortunately, though it's much MUCH slower than doing these operations in a 
standalone C application or whatever. Something like that could go through
+ fortunately, though it's much MUCH slower than doing these operations in a 
standalone C application or whatever. Something like that could go
+through
  all 32768 possible values in less than a second.
  Anyway, I at first made the mistake of extracting values by regenerating the 
randomseed until it was below the requested value. (that was incredibly
- stupid. It means that there are only so many possible values, thus it wrecks 
the randomseed.) After that I used modulus extraction, which is still not the
+ stupid. It means that there are only so many possible values, thus it wrecks 
the randomseed.) After that I used modulus extraction, which is still not
+the
  best, but at least it works.
- At one point, I ran across a strange problem: Generating pairs of values, I 
kept getting the same pairs! There was something wrong with my PRNG. It turns
- out that each number easily predicts the next number, until it hits the 
modulus. Therefore, I increased a and c so that it hit the modulus almost every 
time,
+ At one point, I ran across a strange problem: Generating pairs of values, I 
kept getting the same pairs! There was something wrong with my PRNG. It
+turns
+ out that each number easily predicts the next number, until it hits the 
modulus. Therefore, I increased a and c so that it hit the modulus almost every
+time,
  while still conforming to the required conditions.
- Another problem was more frustrating but easier to solve once I found it: The 
values kept incrementing steadily instead of being random! I spent a long
+ Another problem was more frustrating but easier to solve once I found it: The 
values kept incrementing steadily instead of being random! I spent a
+long
  time puzzling over this before I realized that changing the multiplier wasn't 
having any effect. I investigated, and found a missing $.
- The last problem I encountered was a bug in Wesnoth. That bug is that 
variables remain in existence and retain their values between multiplayer 
games. I
+ The last problem I encountered was a bug in Wesnoth. That bug is that 
variables remain in existence and retain their values between multiplayer
+games. I
  circumvented this by clearing all my variables at the start of the game.
 
- Throughout most of this, I had a bugtester on the multiplayer server called 
Jammet. I thank you, Jammet, for your patience while I fixed incomprehensible
+ Throughout most of this, I had a bugtester on the multiplayer server called 
Jammet. I thank you, Jammet, for your patience while I fixed
+incomprehensible
  bug after incomprehensible bug. Your help was very helpful.
 
- [1] there is also a bug in multiplication; apperently floating-point 
multiplication and subsequently casting floats to ints throws off their values 
on some
+ [1] there is also a bug in multiplication; apperently floating-point 
multiplication and subsequently casting floats to ints throws off their values 
on
+some
  operating systems.
 
 ||See Also||






reply via email to

[Prev in Thread] Current Thread [Next in Thread]