If a large number of fair N-sided dice are rolled, the average of the simulated rolls is likely to be close to the mean of 1,2,...N i.e. the expected value of one die. For example, the expected value of a 6-sided die is 3.5.
Given N, simulate 1e8 N-sided dice rolls by creating a vector of 1e8 uniformly distributed random integers. Return the difference between the mean of this vector and the mean of integers from 1 to N.
The solution quits because it's taking too long. 1e8 is too many?
The difference should essentially be zero i.e. the two averages equal. I wrote a successful script; run in my desktop environment but the tool won't accept my answer as valid.
It crashes every time, how to complete it?
To get this right apparently you have to generate the random numbers exactly the same way as the answer key. When it tests your script it seeds the random number generator and then confirms whether your program gets EXACTLY the same result. However, if you generate the random numbers in any way different from the key, your answer will be "wrong" but is probably still correct.
There is a MatLab function that does it. Nice and easy.
For saving execution time, do without outpout! Then it worked for me.
what is the problem with this solution
Note that using rand() with round() will not produce the correct answer. There is another function that must be used instead.
What can be used? I am a bit confused.
1e8 is too big for the Matlab website. It crashes every time I try it. I managed to find a solution on the full version so I put it in comments and cheated to pass it.
I discovered using a for loop doesn't work - too slow. Then I realised that randi can generate the required vector, doh!
Can anyone do that in a size smaller than 22? That was the smallest size I could get.
10465 Solvers
4619 Solvers
485 Solvers
Determine the number of odd integers in a vector
408 Solvers
234 Solvers