Programming question

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Pat

    Programming question

    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



  • Daniel T.

    #2
    Re: Programming question

    In article <412b7e92$1_1@r ain.i-cable.com>, "Pat" <[email protected]> wrote:
    [color=blue]
    > 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?[/color]

    Look up how to use the 'rand()' function.

    Comment

    • Victor Bazarov

      #3
      Re: Programming question

      Pat wrote:[color=blue]
      > 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?[/color]

      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.programmin g 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

      Comment

      • Stuart McGarrity

        #4
        Re: Programming question

        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(cum pi<pick)+1; % Find which ball this corresponds too
        count(choosen)= count(choosen)+ 1; % Count ball
        end

        Stuart

        "Pat" <[email protected]> wrote in message news:412b7e92$1 [email protected]...[color=blue]
        > 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[/color]
        pi[color=blue]
        > 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[/color]
        give[color=blue]
        > me some hints?
        > Thanks.
        >
        > Pat
        >
        >
        >[/color]


        Comment

        • Kai-Uwe Bux

          #5
          Re: Programming question

          Pat wrote:
          [color=blue]
          > 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[/color]

          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

          Comment

          Working...