-2

興味深い質問だと思いますが、誰かが答えてくれることを願っています。

Excel で rand between 式を使用して、約 1300 の数値をランダムに生成します。これらの数値が重複しないようにしたいので、countif の列を作成しました....countif の合計が生成しようとしている正確な数値 (1300) に等しい場合、別のセルのステートメントは STOP と表示されます。Do Until ループを使用して、セルが STOP と表示されるまで画面を更新しています。

統計的に、これにどれくらいの時間がかかるか知っていますか?

A列 =IF(R2="C",RANDBETWEEN(1,1364)," ")

B列 =IF(A2<>" ",COUNTIF(A:A,A2)," ")

セル C2 =IF(SUM(B:B)>1364,"LOOP","STOP")

Sub Refresh()

Do Until Range("C2").Value = "STOP"
    Sheets("2").Calculate  
Loop

End Sub

ありがとうございました。

4

2 に答える 2

1

これが偶然に起こる確率を計算できます。

例: 1 から 1364 の間の乱数を選択すると、最初の数値が一意である確率は 1364/1364=1 です (予想どおり!) 2 番目の数値が一意である可能性はわずかに低くなります (可能な結果の 1 つがすでに選択された)、すなわち。1363/1364 = 約。0.9993 など...

累積確率を計算するには、すべての確率を掛け合わせます。これは最初はそれほど悪くないように見えますが、選択される値の数が増えるにつれて、それらがすべて一意である累積確率が非常に小さくなります!

Number#    Fav. outcomes   Poss. outcomes   Proab.(F/P)  CumulativeProb.
1             1364          1364              1              1 
2             1363          1364          0.9993        0.999266862170088 
 3             1362          1364          0.9985        0.997801661492419 
 4             1361          1364          0.9978        0.995607083058052 
 5             1360          1364          0.9971        0.992687414192779 
 6             1359          1364          0.9963        0.989048530709667 
 7             1358          1364          0.9956        0.984697877348775 
 8             1357          1364          0.9949        0.979644442494345 
 9             1356          1364          0.9941        0.9738987272891 
 100           1265          1364          0.9274        2.42184294266298E-02 
 200           1165          1364          0.8541        2.1388864198042E-07 
 300           1065          1364          0.7808        3.48483477273297E-16 
 400           965           1364          0.7075        4.65969192062002E-29 
 500           865           1364          0.6342        1.92148262885009E-46 
 600           765           1364          0.5609        7.31144974750256E-69 
 700           665           1364          0.4875        5.58849715194661E-97 
 800           565           1364          0.4142        1.17499140301415E-131 
 900           465           1364          0.3409        4.55604356381877E-174 
 1000          365           1364          0.2676        6.66544033524014E-226 
 1100          265           1364          0.1943        8.31996777956565E-290 

ですから、おそらく長い時間がかかることがわかります....

編集:ブラッドは実際の解決策を持っています:元のアプローチが成功するまでにどれくらいの時間がかかるかを把握しようとしていました(これはコメントに収まりません)

于 2013-07-19T20:40:54.970 に答える