Hacker News new | past | comments | ask | show | jobs | submit login

The initial condition is assigned to you randomly, from the closed interval [1,1000].

Suppose there were [1,k] spots. You are assigned an intial value from [1,k] and you then have to reach 0 before time t=k. Here's my code to solve the general case

     object particle {
       def main(args:Array[String]) = {
         val simulations = args(0).toInt
         val rng = new util.Random
    
         (2 to 1000).foreach(spots=>{
             val reachedZero = (1 to simulations).map(_=> {
               var t = 0
               var z = 1+rng.nextInt(spots)     
               do {
                 z += {if (rng.nextBoolean) 1 else -1}
                 t +=1
               } while( z != 0 && t<spots)
               z==0
             })
             val prob = reachedZero.count(_==true)*1.0d/simulations
             printf("%4d spots: %.4f\n",spots,prob )
           })
       }
     }

     >scala particle 1000000
     2	0.3773
     3	0.329
     4	0.292
     5	0.2714
     6	0.2624
     7	0.2428
     8	0.2247
     9	0.222
     10	0.2157
     ....
So your chances drop from 37% to 21% as the interval expands to 10 spots. At 100 spots, its 8%. By 1000 spots, you have a meager 2.5% chance of crossing 0 before 1000 seconds.



Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: