09-17-2015 08:38 AM
Hi everyone.
I am trying to perform some statistical analysis on an array of dice rolls.
As can be seen from the image below, I habe successfully produced a series of random dice rolls, with the user specifying the number of dice rolls desired. It is output as an array. I am trying to calculate the frequency of each dice roll, e.g. the frequency of 1s, 2s, 3s etc. I am currently struggling. I tried using the histogram VI. Any suggestions?
Solved! Go to Solution.
09-17-2015 08:44 AM
We can't offer any suggestions until you tell us in what ways you are struggling.
09-17-2015 08:51 AM
Well as you can see, the histogram values are splitting into decimal values rather than a 1, 2, 3 etc.
The problem comes from the fact that you don't always roll a 1 and a 6. If I set the bin number to constant 6, and then only end up with 3s and 4s, , it thinks it needs to split those 3s and 4s across 6 sections between 3 and 4.
In the example image I posted, I have 6 histogram points but they are all between 3 and 6.
The array histogram h(x) starts with a 1, yet I have 0 1s. It then has 3 zeroes, yet the third value should be a 1 as I have one 3. The 3 and 2 look ok since I have 2 sixes and 3 fives.
There are 6 indicators on the right of the code, and I am trying to display the frequency of each dice face in the relevant indicator.
09-17-2015 09:14 AM
Actually, I can't see because the image is just small enough that it is hard to tell what is going on. In general, the code looks pretty good. I can't guess at all the things that might be causing you problems. If you are looking for help, then it is helpful if you tell us where you need help. Attaching the actual VI can help as well because than we can see and poke around in it. And even run it to see how it is behaving.
There are several histogram functions in LabVIEW. One of them, has more control of how the bins are set up. It is called General Histogram.vi
You may want to wire a 6 into that histogram rather than connecting it to the number of rolls. If you had 100 rolls, you wouldn't want a 100 bins.
09-17-2015 09:19 AM
Ok sorry yeah, I use a massive monitor so forgot otehr people might not be able to see as clearly.
I didn't want to attach the code as it has sub-VIs and sub-sub-VIs so would be a pain to attach everything. Whats the best way to make sure you get all the sub-VIs as well. Do I need to go through the code and find every sub-VI individually and attach them?
I've done that on this occasion
09-17-2015 09:20 AM
09-17-2015 09:24 AM
Regarding number of Bins, I did try a 6 constant but the data doesnt always have a 1 and 6 in there. Then it messes the code up because it makes 6 divisions out of 5 subsets so you end up with 3.2, 4.6 etc.
my most recent version I maximum and minimum values in my array and tried to use that to calculate the number of bins I need. I tried subtracting the upper from the lower, when that didnt work I tried adding one to it, it hasn't worked as of yet
09-17-2015 09:27 AM
Here is an example with a 6 constant. As you can see, because there are only 2 -6, it tries to split 5 possible values across 6 bins so I end up with weird values in my histogram and x-values
09-17-2015 09:33 AM - edited 09-17-2015 09:39 AM
For attaching all, there is an option in the build specifications on a project to build a source distribution.
It is also helpful to zip them up. It is easier to upload and download, and the forums are limited to 3 file attachments per message.
I modified your VI to use the general histogram.
In your dice roll VI. You should be using 5 as your multiplier rather than 4.99. Otherwise you'd be slightly biasing your results towards the lower numbers. Actually, you are never getting a 1 unless you happen to get lucky and get an exact 0.00000..... because anything above that rounds up to 1, then you add 1 giving you a two.
The correct randomization for a dice roll. Is random Times 6. Round down, Add 1.
09-17-2015 10:32 AM
Ok brilliant. I have put the last few finishing touches in and this time saved it as a zip file. Could you double check it for me and give me any critique as to how I can improve my code?