MATLAB Matlab question (possibly only a simple math problem)

  • Thread starter Thread starter sapiental
  • Start date Start date
  • Tags Tags
    Matlab
AI Thread Summary
The discussion revolves around using MATLAB's rand(1,1) function to randomly select between three objects, A, B, and C. The user proposes dividing the output range of rand(1,1) into segments for each object, but notes that this method may slightly favor object A due to the range distribution. Suggestions include using an if statement to handle the case when the random number is 0, which could help achieve a more balanced selection. Additionally, an alternative approach using Fix(10*rand(1,1)) is mentioned for generating a number from 0 to 9, which could also ensure equal distribution among the objects. Overall, the method is considered acceptable, but adjustments may be needed for fairness in selection.
sapiental
Messages
110
Reaction score
0
Hello,

I'm currently writing a program for my computational physics course and ran into this issue with my program.

The function in MATLAB rand(1,1) gives you a random number from [0,1) to 4 significant figures. So for example if I ran this function it would look something like this.

input:
A = rand(1,1)
output:
A = .5040

Now I have to use this function to make it randomly choose beetween 3 objects (A,B,C). The problem I run into is that the professor told us to specifically use rand(1,1) for the random pick (Probably to test our math and get more familiar with the program.) Since this produces 10 possible values, then I need to assign (A,B,C) 10/3 apart.

Object_A = [.0000:.3333]
Object_B = (.3334:.6666)
Object_C = (.6667:.9999)

I set the object_pick = (rand(1,1))
possible values are (.0000-.9999)

then just write a bunch of if/else statements to determine which range of values the object_pick value falls.

Does this approach make sense to you guys from a mathematical point of view? Since the function rand(1,1) in MATLAB gives you a psuedorandom number as opposed to a truly randomly generated value as in C++, I feel that this method should be acceptable.

Any feedback, comments, or suggestions are much appreciated. Also, Thanks into whoever took the time to read this.
 
Physics news on Phys.org
Depending on how picky your prof is, the likelihood of object A coming up is *slightly* higher.
0 to .3333 includes 3334 different values (don't forget to count 0). Your other ranges have 3333 values.

You could probably do a quick if statement and ignore instances when the random number generator returns 0. Otherwise, it looks fine to me.
 
Yea, i can also do this. Fix(10*rand(1,1)) which will pick a number out of (0,1,2,3,4,5,6,7,8,9)

so excluding the 0 will give an equal distribution to 3 objects because it just tells the program to generate another number and doesn't really change anything. But, would the random pick still truly depend on rand(1,1)?

Thanks
 

Similar threads

Replies
2
Views
2K
Replies
2
Views
4K
Replies
4
Views
3K
Replies
5
Views
5K
Replies
5
Views
1K
Back
Top