C++ Project to produce random number -- 2

Concluído Postado Mar 16, 2015 Pago na entrega
Concluído Pago na entrega

Random Generator Program

Instructions:

You will write a program to generate a series of pseudo random numbers, using a

linear feedback shift register method. You will start with an arbitrary number (not zero) x with a

representation in n bits. If x = 15 and n = 4, then x = 1111. Then you will select a pair of bits,

say bits 0 and 1, take their "xor" producing a new bit - in this case a 0. The number x will then

shift to the right, with the new bit becoming the new high bit - in this case 0111. The process

continues in this manner to produce a random set of bits. With four bits, we can only have up to

15 unique transitions before repetitions begin, or 2n - 1. With n = 32, the number of random bits

has a much greater potential. The numbers actually produced by the "shifting" cannot be

considered "random", since all but one of the bits overlap from each succeeding number.

However, if we want to produce, say 100 6-bit numbers, then we need to shift the bits into an 6-

bit register. We can then save its "value" in an array of 100 integers. Then we should produce

the output which will display the distribution. Random numbers should follow a uniform

distribution. Using a 32-bit generator does not guarantee 2n - 1 random bits. For good results try

using bit combinations 0/4, 0/7, 0/25, 0,26, 0/29.

Example:

11001110 -> 11100111 -> 01110011 -> 10111001 -> 11011100 ->

11101110 -> 11110111 -> 01111011 -> 10111101 -> 01011110 -> etc

Three random 4-bit numbers produced: 11, 13, 4, .... Try "tapping" different bit combinations, as

well as the ones I suggested. To verify that the set of numbers you generated are really pseudo

random, you will test them using the statistical χ 2 test. You will generate 10,000 numbers in the

0-63 range. Then N=10,000 and r=64. You will then compute 2 by the formula

If χ2 is in the range of r ± 2 r , we conclude that distribution is indeed random. Otherwise it may

not be. In your program, you will implement a random number generator module. Then the

program will request 10,000 random numbers in the range of 0-25. It will then apply the test to

see if the numbers are random. You should apply the test a number of times because it has a 1/10

chance of showing failure even when the random distribution is successfully generated.

You will implement the random number generator as a RandonGenerator C++ class. The

constructor will have to initialize the seed value. Subsequent calls to the random( ) method with

integer parameter range will return a random value in the range between 0 to range-1 inclusive.

The tapping bits should be set by default (in the constructor).

2 0 i<r

i

2

=

( f - N / r )

N / r

You will create a class called RandomGenerator. You will use inheritance to create two

subclasses, UniformGenerator and ExponentialGenerator. The 1st will generate random

integers in a range from 0 to n –1. The 2nd will generate random real numbers in an exponential

distribution with parameter lambda. The class hierarchy will look as follows:

Be sure that your design factors the common behaviors of all generators into the super class,

RandomGenerator. After running your program several times you will take the output from the

file you generated, and put it though a test. The exponential numbers should follow the

exponential distribution with parameter lambda. You should take the numbers, and graph them in

a spreadsheet, such as Excel. The shape of your distribution will reveal the quality of your

generated numbers. A histogram may be a good way to visualize the numbers.

The uniform numbers, will tend to have a similar number of occurrences for all numbers in the

range. You should use a spreadsheet again to show your result. In addition, you should also

include the chi square test along with the uniform numbers.

RandomGenerator

UniformGenerator ExponentialGenerator

.NET Programação C Programação C# Programação C++ Arquitetura de software

ID do Projeto: #7318733

Sobre o projeto

3 propostas Projeto remoto Ativo em Mar 16, 2015

Concedido a:

hyfranqui

Hello, I'm a college-graduated Computer Engineer. During my college years I solved lots of homeworks in the same level of difficulty as this one. In addition, I was two times instructor / teacher assistant to the pr Mais

$15 USD em 1 dia
(0 Comentários)
0.0

3 freelancers estão ofertando em média $23 nesse trabalho

dd1988

I have several years of experience in software and web development. I can make this program in visual c++ for you Thank you

$30 USD em 1 dia
(5 Comentários)
2.7
TimSviridov

A proposal has not yet been provided

$25 USD em 1 dia
(0 Comentários)
0.0