Welcome to Web-News
A Web-based News Reader
Subject Re: random getstate/setstate
From Wyverex <wyverex.cypher@gmail.com>
Date Sun, 10 Aug 2008 23:22:12 -0400
Newsgroups digitalmars.D.learn

import
   std.c.time,
   std.random,
   std.stdio;


class Random
{
   private uint seed, index;

   this()
   {
      seed = time( null );
      rand_seed( seed, index );
   }

   this( uint _seed, uint _index = 0 )
   {
     seed = _seed;
     index = _index;
     rand_seed( seed, index );
   }

   void reseed( )
   {
     seed = time( null );
     index = 0;
     rand_seed( seed, index );
   }

   void reseed( uint _seed, uint _index = 0 )
   {
     seed = _seed;
     index = _index;
     rand_seed( seed, index );
   }

   synchronized int next() { ++index; return rand(); }

   uint getseed() { return seed; }
   uint getindex() { return index; }
}

void main()
{
   //first random
   auto r = new Random;
   writefln("%d %d %d", r.next, r.next, r.next);
   //reset seed..
   auto r2 = new Random(r.getseed);
   writefln("%d %d %d", r2.next, r2.next, r2.next);

   //get next 3
   writefln("%d %d %d", r.next, r.next, r.next);

   //use index to get same numbers with seed
   r.reseed(r.getseed, r.getindex-3);
   writefln("%d %d %d", r.next, r.next, r.next);
}


Recent messages in this thread
 
-# random getstate/setstate telengard 10-Aug-2008 09:38 pm
.-# Re: random getstate/setstate (Current message) Wyverex 10-Aug-2008 11:22 pm
..\# Re: random getstate/setstate telengard 11-Aug-2008 12:02 am