#!/usr/bin/perl -w

# $Date: 2006/01/01 16:17:32 $

my $seed = 1;
use strict;

my $from = 1;
my $to   = 360000;


my $m = 42;
my $a = 1234567890;

sub myfun
{
	my $x = shift;

	return $m * $x + $a;
}

my $sigma = $to * $m;

###  MAIN

for (my $i=$from; $i<=$to; $i++)
{
	my $y = myfun($i);
	my $error = myerror();
	printf "%.0f %.0f\n", $i,$y + $sigma * $error;
}

## END


# simple pseudorandom number generator
sub myrand
{
	$seed = $seed * 1103515245 + 12345;
	$seed = $seed % (2 ** 32);

	return $seed;
}

# generate Gaussian error by adding many uniform errors...

sub myerror
{
	my $sum = 0;

	for (my $i=0; $i<16; $i++)
	{
		my $val = myrand();
		$val = $val / (2 ** 32);
		$val = $val -0.5;
		$val *= sqrt(12);  # Scaling to get variance to 1
		
		$sum += $val;
	}
	return $sum / 4; # approximately N(0,1) distributed
}
		

