数当ての正解をランダムで発生させるのにどうするか考察中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桁になるまで削る。
明日やってみよう。
コメントする
コメントするには、ログインする必要があります。
コメント一覧
hightoller(投稿日:2011/05/01 17:37,
履歴)
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
こんなかんじ?
hightoller(投稿日:2011/05/01 15:09,
履歴)
一つ疑問が。例えば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。
同じか。
で、無事動きました。