prng/
#include <stdio.h>
#include <string>
#include "prng.h"

int main(int argc, char *argv[])
{
	std::string str = "testing";
    PRNG test_rand;
    PRNG test_seed (*(unsigned int *) "testing");
    int i, results[11] = {0};

    printf ("Testing distribution with 10,000 numbers between 1 and 10:\n");

    for (i = 0; i < 10000; i++)
        results[test_rand (10)]++;
    
    for (i = 1; i < 11; i++)
        printf ("  %2d: %3d\n", i, results[i]);

    printf ("\nGenerating 20 random numbers between 1 and 100:\n");

    for (i = 1; i < 21; i++)
        printf ("%3d%c", test_rand (), i % 10 == 0 ? '\n' : ' ');

    printf ("\nGenerating 20 random numbers between 1 and 25:\n");
    for (i = 1; i < 21; i++)
        printf ("%3d%c", test_rand (25), i % 10 == 0 ? '\n' : ' ');

    printf ("\nGenerating 20 random numbers between 20 and 50:\n");
    for (i = 1; i < 21; i++)
        printf ("%3d%c", test_rand (20, 50), i % 10 == 0 ? '\n' : ' ');

    printf ("\nGenerating 20 4d5 dicerolls with no rerolls:\n");
    for (i = 1; i < 21; i++)
        printf ("%3d%c", test_rand (4, 5, 0), i % 10 == 0 ? '\n' : ' ');

    printf ("\nGenerating 20 4d5 dicerolls with 3 rerolls:\n");
    for (i = 1; i < 21; i++)
        printf ("%3d%c", test_rand (4, 5, 3), i % 10 == 0 ? '\n' : ' ');

    printf ("\nGenerating 20 random numbers between 1 and 32,000:\n");

    for (i = 1; i < 21; i++)
        printf ("%5d%c", test_rand (32000), i % 10 == 0 ? '\n' : ' ');

    printf ("\nGenerating 20 random numbers between 1 and 100 with \"testing\" as a seed:\n");

    for (i = 1; i < 21; i++)
        printf ("%3d%c", test_seed (), i % 10 == 0 ? '\n' : ' ');

    test_seed.set_seed (*(unsigned int *) str.c_str());
    printf ("\nGenerating 20 more random numbers between 1 and 100 with \"testing\" as a seed:\n");

    for (i = 1; i < 21; i++)
        printf ("%3d%c", test_seed (), i % 10 == 0 ? '\n' : ' ');

    return 0;
}