1

免責事項:質問のタイトルが正確かどうかわからない...

次の 100 分以内に皿を洗う必要があるとしましょう。遅くとも 100 分後にそれをしなければならないことはわかっています。私は2分ごとに「やるべきか、やらないべきか」と自問自答しています。(だから私は合計50回自問します)。やるべきかどうかを自問するたびに、やるかどうかを決める確率を計算したいと思います。確率は、実験を100万回繰り返した場合、2分、4分、6分などの後にそれを行う可能性がほぼ均等になるようにする必要があります。つまり、する確率。

個々の確率を に設定する実験を行いましたがcheck_number / total_number_of_checks、正しい結果が得られないようです。何か案は?

# gem install ascii_charts
require 'ascii_charts'

time_frame = 100
check_frequenzy = 2
number_of_checks = time_frame / check_frequenzy

checks = (1..number_of_checks)

result = {}
checks.each do |i|
  result[i] = 0
end

10_000.times do |t|
  checks.each do |check_number|
    probability = check_number/number_of_checks.to_f
    if rand() <= probability
      # Oh no! I need to do the dishes now :-(
      result[check_number] += 1
      break
    end
  end
end

puts AsciiCharts::Cartesian.new(result.to_a).draw

#=>

950|                                                                                                                                                      
900|                *  *  *                                                                                                                               
850|                         *                                                                                                                            
800|             *                                                                                                                                        
750|                            *                                                                                                                         
700|          *                                                                                                                                           
650|                               *                                                                                                                      
600|       *                          *                                                                                                                   
550|                                                                                                                                                      
500|                                     *                                                                                                                
450|                                                                                                                                                      
400|    *                                                                                                                                                 
350|                                        *                                                                                                             
300|                                           *                                                                                                          
250|                                                                                                                                                      
200| *                                            *                                                                                                       
150|                                                 *                                                                                                    
100|                                                    *                                                                                                 
 50|                                                       *  *  *                                                                                        
  0+----------------------------------------------------------------*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*-
     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 
4

2 に答える 2

3

これらの条件付き確率は、ベイズの定理を使用して計算できます。

T食器を洗う時間 (分単位) に等しい確率変数を とします。

確率が「線形」(0〜100分)であると仮定すると、任意の確率変量についてt

P[T <= t] = .01*t, 0 <= t <= 100

時間 に皿が洗われていない場合t0、次の 2 分以内に皿が洗われる (条件付き) 確率は次の式で与えられます。

P[T <= t+2| T > t] = P[T <= t+2 and T > t] / P[T > t]
                   = (P[T <= t+2] - P[T <= t]) / (1-P[T <= t])
                   = (.01*(t+2) - .01t) / (1-.01t)
                   = 2/(100-t)

P[T <= t+2| T > t]「 (の値)がより大きい場合、確率(の値)Tは以下である」と読みます。t+2Tt

したがって:

P[T <=   2 | T >  0] = 2/98
P[T <=   4 | T >  2] = 2/96
...
P[T <=  98 | T > 96] = 2/4
P[T <= 100 | T > 98] = 2/2

私にとって、料理について話している場合、線形性の要件を削除すると、次のようになります。

P[T <= 98] #=> 0
于 2015-03-19T21:10:02.447 に答える
2

タスクを達成する機会が与えられN、各機会の確率が1/Nである場合、次のアルゴリズムを使用してその場でランダムな機会を選択できます。(Rubyはよくわからないので疑似コードを使いました。)

for i from 1 to N
    r = random integer from 0 to N-i inclusive
    if r == 0
        return 2*i  // wash dishes now, at the ith opportunity (2*i minutes)
                    // otherwise continue the loop

の場合N=50、これは最初の機会の確率が であることを意味しp(1) = 1/50ます。その後、2 回目のチャンスは確率p(2) = 1/49です。この後、p(3) = 1/48、 まで続きp(50) = 1/1ます。つまり、まだ行っていない場合は、最後の機会にタスクを実行する必要があります。


特定のポイントまで個々の確率を乗算するだけで、これが各機会に均一な確率を与えることを確認できます。例えば、4回目のチャンスを掴むチャンス…

  • 最初の機会にタスクを実行しない確率は49/50
  • 2 番目の機会にタスクを実行しない確率は48/49
  • 3 番目の機会にタスクを実行しない確率は47/48
  • 4 回目の機会にタスクを実行する確率は1/47

製品は49/50 * 48/49 * 47/48 * 1/47 = 1/50希望どおりです。


つまり、次のprobability = check_number/number_of_checks.to_fように変更する必要があります。probability = 1.0/(number_of_checks - check_number)

これは以下をレンダリングします:

260|                                                                                                                *                                     
240|                                           *                                                                       *                                  
220|             *                                *  *              *              *     *              *     *  *        *  *  *              *  *       
200| *  *  *  *           *  *              *           *  *  *  *     *  *  *  *           *        *     *                       *  *              *    
180|                *  *        *  *  *  *                                            *        *  *                                      *  *             
160|                                                                                                                                                      
140|                                                                                                                                                      
120|                                                                                                                                                      
100|                                                                                                                                                      
 80|                                                                                                                                                      
 60|                                                                                                                                                      
 40|                                                                                                                                                      
 20|                                                                                                                                                      
  0+----------------------------------------------------------------------------------------------------------------------------------------------------*-
     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 

特に興味がある場合は、N事前に機会の数がわからなくても、実際に一様分布を生成できます。これを行う方法については、リザーバー サンプリングを参照してください。

于 2015-03-19T21:12:14.180 に答える