Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Algorithm for Math.Random [closed]

This was the question asked by one Interviewer. I was unable to answer.

Question was, assume you want to pick a random number from the given array.

Condition is you are not supposed to pick anything in sequential and not to use built in Random function.

I have no idea. Like to know how is this Math.Random does for us?

I googled and didn't find the implementation/logic behind that.

Any one know?

like image 514
Billa Avatar asked Mar 21 '13 15:03

Billa


People also ask

What algorithm does Math random use?

In most browsers, Math. random() is implemented using a pseudo-random number generator (PRNG). This means that the random number is derived from an internal state, mangled by a deterministic algorithm for every new random number.

Is Math random () really random?

random() is a pseudo-random number as no computer can generate a truly random number, that exhibits randomness over all scales and over all sizes of data sets. However, the pseudo-random number generated by Math.

What is the algorithm for random number generator?

An early computer-based PRNG, suggested by John von Neumann in 1946, is known as the middle-square method. The algorithm is as follows: take any number, square it, remove the middle digits of the resulting number as the "random number", then use that number as the seed for the next iteration.

Can you predict Math randomly?

Math. random is actually very predictable, once you know the seed and the iteration (how many numbers were generated since the seed was set).


1 Answers

So far three people have told you to use the last digit of Ticks. This doesn't work. Try doing so in a tight loop and you will quickly see why it is a bad idea.

The question is not very well posed. I like giving ambiguously posed questions in interviews because you get to find out how the candidate deals with an ambiguous situation. In this case I would immediately push back and find out what the interviewer means by "random". Is pseudo-randomness good enough? Is there a source of high-quality entropy available?

Once you have a clarified question it should be easier to answer.

The problem comes down to managing entropy. If you have a very weak source of entropy -- like the value of Ticks (not the last digit, which is worthless, but the entire value) then you can use that to seed a pseudo-random-number generator. If you have a high quality source of entropy then you can just use that to generate random bits directly.

like image 69
Eric Lippert Avatar answered Sep 23 '22 00:09

Eric Lippert