This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.

1) build a list of prime numbers
2) select one at random.

In all seriousness, you need better specs. Since there are an infinite number of prime numbers, you can't just pick one at random any more than you can pick a rational number at random. You need to (at the very least) define the parameters...is there a range of prime numbers you want to select from (i.e. prime numbers less than 100?) or only the first 50 prime numbers?

Then, you start writing out your algorithm - by hand, and in English (or whatever natural language you are most comfortable with). I have already done the first iteration for you. Start refining each step - how will you build a list of prime numbers (and that will depend on the parameters you define above)?

The nice thing about programming and designing this way is that steps 1 and 2 above are COMPLETELY INDEPENDENT of one another. Selecting an item from a list is not impacted at ALL by how I build a list or what is in it. And building a list of prime numbers is unaffected by what I do with the list when it is done. That lets you focus in on the one part of the problem at a time, and not worry about anything else.

When you have part 1 done, tested, validated, re-tested, and re-tested again, you can just plug it in for when you work on part 2.

There are only two hard things in computer science: cache invalidation, naming things, and off-by-one errors

Bear in mind that you're going to need a better defined requirement than that. There are an infinite number of prime numbers, so it's theoretically impossible to pick a random one with an even probability distribution.

fred rosenberger wrote:1) build a list of prime numbers
2) select one at random.

In all seriousness, you need better specs. Since there are an infinite number of prime numbers, you can't just pick one at random any more than you can pick a rational number at random. You need to (at the very least) define the parameters...is there a range of prime numbers you want to select from (i.e. prime numbers less than 100?) or only the first 50 prime numbers?

Then, you start writing out your algorithm - by hand, and in English (or whatever natural language you are most comfortable with). I have already done the first iteration for you. Start refining each step - how will you build a list of prime numbers (and that will depend on the parameters you define above)?

The nice thing about programming and designing this way is that steps 1 and 2 above are COMPLETELY INDEPENDENT of one another. Selecting an item from a list is not impacted at ALL by how I build a list or what is in it. And building a list of prime numbers is unaffected by what I do with the list when it is done. That lets you focus in on the one part of the problem at a time, and not worry about anything else.

When you have part 1 done, tested, validated, re-tested, and re-tested again, you can just plug it in for when you work on part 2.