By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
 445,943 Members | 2,025 Online
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 445,943 IT Pros & Developers. It's quick & easy.

# Programming question

 P: n/a I am a C++ beginner, please give me some suggestion on the following question. Given n balls. The probability pi is the chance to choose ball i. Sum of pi is 1. I want to run 10000 independent trials in selecting the ball, and simulate the expected number of each ball to be choosen. I have no idea how to implement the probability drawing step. Could you give me some hints? Thanks. Pat Jul 22 '05 #1
Share this Question
4 Replies

 P: n/a In article <41**********@rain.i-cable.com>, "Pat" wrote: I am a C++ beginner, please give me some suggestion on the following question. Given n balls. The probability pi is the chance to choose ball i. Sum of pi is 1. I want to run 10000 independent trials in selecting the ball, and simulate the expected number of each ball to be choosen. I have no idea how to implement the probability drawing step. Could you give me some hints? Look up how to use the 'rand()' function. Jul 22 '05 #2

 P: n/a Pat wrote: I am a C++ beginner, please give me some suggestion on the following question. Given n balls. The probability pi is the chance to choose ball i. Sum of pi is 1. I want to run 10000 independent trials in selecting the ball, and simulate the expected number of each ball to be choosen. I have no idea how to implement the probability drawing step. Could you give me some hints? This is not really a C++ language question, and as such it doesn't belong here, in all honesty. Please ask generic programming questions in comp.programming and generic mathematics questions in sci.math. Some hints: usually simulating with a computer something that occurs at random requires the use of pseudo-random number generator. There is one in the Standard C++ library. Its interface consists of two functions named 'rand' and 'srand'. Since computers are pretty much deterministic devices when it comes to programmed behaviour, simulating real-time random situations with computers is tricky and requires some assumptions to be made. You need to figure out what "10000 independent trials" really means because if it's all in the same program, it's not really _independent_. Victor Jul 22 '05 #3

 P: n/a It would probably be quicker to design the algorithm in something like MATLAB first (in this case 10 min) then look at implementing it in C++ once you know what your doing if you need to. One algorithm is: % Generate probabilities n=100; % Number of balls trials=100000; % Number of independant trials pi=rand(n,1); % n different probabilities of a ball being choosen pi=pi/sum(pi); % Ensure sum is 1 cumpi=cumsum(pi); % Cumulative sum of probabilities %% Simulate count=zeros(n,1); % Set all ball counts to 0 for i = 1:trials pick=rand; % Pick a number between 0 and 1 choosen=sum(cumpi wrote in message news:41**********@rain.i-cable.com... I am a C++ beginner, please give me some suggestion on the following question. Given n balls. The probability pi is the chance to choose ball i. Sum of pi is 1. I want to run 10000 independent trials in selecting the ball, and simulate the expected number of each ball to be choosen. I have no idea how to implement the probability drawing step. Could you give me some hints? Thanks. Pat Jul 22 '05 #4

 P: n/a Pat wrote: I am a C++ beginner, please give me some suggestion on the following question. Given n balls. The probability pi is the chance to choose ball i. Sum of pi is 1. I want to run 10000 independent trials in selecting the ball, and simulate the expected number of each ball to be choosen. I have no idea how to implement the probability drawing step. Could you give me some hints? Thanks. Pat a) This is off-topic here. b) Google for "J.A. Walker's alias method" or look up D.E. Knuth The Art of Computer Programming Vol 2, page 120--121 for a description. Best Kai-Uwe Bux Jul 22 '05 #5

### This discussion thread is closed

Replies have been disabled for this discussion.