Log In

Come Join Us!

Are you a
Computer / IT professional?
Join Tek-Tips Forums!
  • Talk With Other Members
  • Be Notified Of Responses
    To Your Posts
  • Keyword Search
  • One-Click Access To Your
    Favorite Forums
  • Automated Signatures
    On Your Posts
  • Best Of All, It's Free!

*Tek-Tips's functionality depends on members receiving e-mail. By joining you are opting in to receive e-mail.

Posting Guidelines

Promoting, selling, recruiting, coursework and thesis posting is forbidden.

Students Click Here

Random picked numbers

Random picked numbers

Random picked numbers

I work on an application that requires the computer to pick out a number less than 100 every 5 minutes in 10 hrs (120 numbers are produced in 10 hrs).  In those 120 numbers, the computer will pick out 12 numbers randomly at the time the computer generate the number.  The application will run everyday from 7AM to 5PM.  
I am stuck on how to constraint 12 numbers.  Any help will be really appreciated.
Thanks a lot.


RE: Random picked numbers

So what happens every 5 minutes?
- nothing
- something
- depends on the random value generated.

You seem to be suggesting that you may as well generate 120 numbers at 5pm, and go from there.

>  at the time the computer generate the number
What does this mean?

If you dance barefoot on the broken glass of undefined behaviour, you've got to expect the occasional cut.

RE: Random picked numbers

- every 5 minutes, the computer pick out a random number (which is <100, ie. 70), it prints out the number it picks.
- After it generate this number (ie. 70), it also tells that this number is picked to be in the sample.
- There will be 120 numbers get created from 7AM to 5PM.  Out of 120 numbers, there will be only 12 numbers get pick to be the sample.
Here is what it should output:
- At 7:00 AM, number picked 70, count #1, number is picked.  Sample #1  
- At 7:05 AM, number picked 25, count #2, number is NOT picked.  
- At 7:10 AM, number picked 30, count #3, number is NOT picked.
- At 7:15 AM, number picked 32, count #4, number is NOT picked.  
- At 10:45 AM, number picked 99, count #xx, number is picked.  Sample #2
- At 10:50 AM, number picked 22, count #xx+1, number is picked.  Sample #3
- At 4:20 AM, number picked 55, count #1yy, number is picked.  Sample #12
- At 5:00 PM, number picked 21, count #120, number is NOT picked.  

As a note, all the time that it picks out the sample has to be random.  The output has to be printed out has the number gets generated.  The sample per 10-hr day has to be 12.

I get stuck at the part that how to pick out 12 numbers randomly in the 120-count set.  
Thanks for helping.


RE: Random picked numbers

At the start of the day, 7:00 AM, generate a list of 12 times between 7:00 and 17:00 at which the number is to be picked.

One way would be to put all 120 times into an array, shuffle that array, and then pick the first 12 entries.  This guarantees that you'll always get unique times.

If you dance barefoot on the broken glass of undefined behaviour, you've got to expect the occasional cut.

RE: Random picked numbers

It seems it's rather an odd and artificial specification in the post #3. If we have a good (pseudo-) random numbers generator (with a proper seed initialization) or (especially) hardware random generator, no matter what's selected sequence. If we have a bad one, we can't improve random sequence quality with shaman dances around selecting order...

Apropos, shuffled random sequence is not better than original one in the theory of probability sense.

If you want true (or near;) random choices, you can't use pseudo-random generators at all. In that case you need more complex approach with disk rotation speed sensors etc (at least;). It's another story.

RE: Random picked numbers

True.  The problem here is the number generated and picked have to be at realtime.  i can't pre-generate them.  


RE: Random picked numbers

Why can you not pre-generate them?  A number that's random at 4:45 is going to be just as random at 8:20.

Generate 12 random values at 8:00 and place them into an array... call it Value.  Also at 8:00, generate another 12 random numbers between 1 and 120, also placed into an array... we'll call this one Time.  Each value in Time corresponds to a 5-minute period.

Every 5 minutes, scan the Time array... if the current 5-minute period matches up with one listed in the Time array, grab a number from the Value array (or just generate the damn thing on the fly and forget about the Value array altogether).

None of your requirements make much sense, and it sounds like you're going around your elbow to get to you rear end.  Why is so much complication needed for such a simple problem?  There has to be a reason for the complication, be it a homework assignment that says you must do it this way or some requirement you're not letting us in on.

RE: Random picked numbers

What happens if you get to say 16:45 and you've only generated two of your 12 samples?

You've run out of time slots to generate the required number of samples.

Planning the day in advance is going to be just as effective, and be far simpler to implement than the approach you're suggesting of incrementally fiddling with probabilities to ensure that you always get 12 samples in 10 hours.

Plus if you're calling standard rand(), then you'll get EXACTLY the same sequence if you call it 120 times in a loop at 07:00 as you would calling it once every 5 minutes through the day.  Once you've set the seed, it's entirely deterministic in that waiting has no impact on the result it will return next.

If you dance barefoot on the broken glass of undefined behaviour, you've got to expect the occasional cut.

RE: Random picked numbers

The reason i try to avoid the pre-generate approach is to allow the future capability - which allow user to enter a number at 5-minute cycle, then the entry will either be picked as sample or not.  I code is currently go with pre-generated approach but i think there is a better way, so i posted this question.  I do not want to go back to the array in my future capability and delete the pre-generated value and replace the user-entered value in the array.  
I already got the algorithm to check the last 12 times, which start at 16:00 and make sure that i do get no more than 12 samples that get picked.

Thanks a lot for your help.


RE: Random picked numbers

I don't see that you'd be "deleting" and "replacing" items in your predetermined array.

You can just say



Then at the end of the day, pick your 12 values.

Red Flag This Post

Please let us know here why this post is inappropriate. Reasons such as off-topic, duplicates, flames, illegal, vulgar, or students posting their homework.

Red Flag Submitted

Thank you for helping keep Tek-Tips Forums free from inappropriate posts.
The Tek-Tips staff will check this out and take appropriate action.

Reply To This Thread

Posting in the Tek-Tips forums is a member-only feature.

Click Here to join Tek-Tips and talk with other members! Already a Member? Login

Close Box

Join Tek-Tips® Today!

Join your peers on the Internet's largest technical computer professional community.
It's easy to join and it's free.

Here's Why Members Love Tek-Tips Forums:

Register now while it's still free!

Already a member? Close this window and log in.

Join Us             Close