数当ての正解をランダムで発生させるのにどうするか考察中3
投稿者:
hightoller
投稿日:2011/05/01 02:29
p = createArray()
dig = 0
while dig < b #passdig
len = getArrayLength(k)
p[dig] = k[rand(len)]
pck = 0
while pck < len #keypck
if k[pck] >= p[dig] #
k[pck] = k[pck+1]
end #
pck = pck + 1
end #keypck
popArray(k)
dig = dig + 1
end #passdig
重複する理由が単純に配列に1を加えてたからってのに気付く。
次の配列を参照しないといけなかったんですな。こいつは解決。
しかし前回のブログに頂戴したrurun9さんの提言の方が
求め方が簡略できそうなので挑戦。
1からaまでの数字をランダムに入れ替え、b桁になるまで削る。
明日やってみよう。
コメントする
コメントするには、ログインする必要があります。
コメント一覧
a = 5 b = 3 k[0]=1 k[4]=5 i =0 while i < a r = rand(a) k[i] = k[r] k[r] = i + 1 i = i + 1 end while i > b popArray(k) i = i - 1 end
こんなかんじ?
一つ疑問が。例えば1.2.3の数字を左から順に3回、3箇所の中から入れ替える時、
2が動かない確率と動いたけど元の場所に戻る確率を加えた物が、
1.2.3の中から1個ずつ選んで並べた時、2番目に2が来る確率って同じなのかな。。
前者、動かない確率が2/3*1/3*2/3=4/27。
2回で戻る確率が1/3*1/3*2/3+2/3*1/3*1/3=4/27
3回で戻る確率が1/3*1/3*1/3=1/27
後者が2/3*1/2=1/3。
同じか。
2が動かない確率と動いたけど元の場所に戻る確率を加えた物が、
1.2.3の中から1個ずつ選んで並べた時、2番目に2が来る確率って同じなのかな。。
前者、動かない確率が2/3*1/3*2/3=4/27。
2回で戻る確率が1/3*1/3*2/3+2/3*1/3*1/3=4/27
3回で戻る確率が1/3*1/3*1/3=1/27
後者が2/3*1/2=1/3。
同じか。
で、無事動きました。