TGM randomizer: Difference between revisions

From TetrisWiki
Jump to navigation Jump to search
(FIELD_OTHER)
*>Jujubo
(Undo revision 11670 by 74.54.156.73 (Talk))
Line 12: Line 12:
(But TGM-ACE also never deals an S, Z or O as the first piece.)
(But TGM-ACE also never deals an S, Z or O as the first piece.)


FIELD_MESSAGE_dronsi
== Pseudocode ==
The finite-tries variation used in TGM works as follows:
:Function tgmRandomize(''history'' as list of 4 pieces by reference, ''numTries'' as integer by value) as piece:
::For ''try'' = 1 to numTries:
:::''candidatePiece'' = random element of set {I, J, L, O, S, T, Z}
:::If ''candidatePiece'' is not in ''history'':
::::Exit loop
::Move all tetrominoes in ''history'' back by one position
::Put ''candidatePiece'' at front of ''history''
::Return ''candidatePiece''
 
As ''numTries'' increases without bound, the algorithm's behavior approaches the following:
:Function tgmRandomizeInf(''history'' as list of 4 pieces by reference) as piece:
::''candidatePiece'' = random element of set {I, J, L, O, S, T, Z} minus those pieces that are in history
::Move all tetrominoes in ''history'' back by one position
::Put ''candidatePiece'' at front of ''history''
::Return ''candidatePiece''


== References ==
== References ==

Revision as of 12:41, 18 December 2008

Most games in Arika's Tetris The Grand Master series randomize the order of tetrominoes using an algorithm that makes successive identical tetrominoes less common. It involves keeping a history of the four most recent tetrominoes and trying to choose a random tetromino not in the history. It "rolls the dice" a given number of times and takes the first tetromino that doesn't match any in the history. TGM1 uses 4 tries; subsequent games using the TGM randomizer use 6 tries.

The history is not a unique list. If the randomizer fails to generate a unique tetromino, which happens about 3.5 percent of the time in a 6-try system, then two or more of one tetromino may occupy elements of the history.

A few additional behaviors exist in the beginning of the game.

  • The game never deals an S, Z or O as the first piece.
  • The state of the history is initialized to a fixed state:
    • In TGM1, the history begins filled with 4 Z pieces.
    • In TGM2, the history begins with a Z,S,Z,S sequence.

Tetris The Grand Master Ace does not use the TGM randomizer; it uses TTC's Random Generator algorithm instead.
(But TGM-ACE also never deals an S, Z or O as the first piece.)

Pseudocode

The finite-tries variation used in TGM works as follows:

Function tgmRandomize(history as list of 4 pieces by reference, numTries as integer by value) as piece:
For try = 1 to numTries:
candidatePiece = random element of set {I, J, L, O, S, T, Z}
If candidatePiece is not in history:
Exit loop
Move all tetrominoes in history back by one position
Put candidatePiece at front of history
Return candidatePiece

As numTries increases without bound, the algorithm's behavior approaches the following:

Function tgmRandomizeInf(history as list of 4 pieces by reference) as piece:
candidatePiece = random element of set {I, J, L, O, S, T, Z} minus those pieces that are in history
Move all tetrominoes in history back by one position
Put candidatePiece at front of history
Return candidatePiece

References