C言語なら、俺に聞け! <9>
■ このスレッドは過去ログ倉庫に格納されています
0206デフォルトの名無しさん
NGNGint A[100] = {0, 1, 2, 3, ... 99};
int B[10];
int index;
for(i = 0; i < 10; i++)
{
index := random(100 - i);
B[i] := A[index];
// indexより右にある要素を左にずらす。
if (index < 99 - i)
{
memmove(&A[index], &A[index + 1], 99 - i - index);
}
}
要件を満たしていませんか?
>>80
>結局何の確率が知りたいのかわかんない。
どこかに0-99までの値で重複しない乱数を10個取得する方法があるとすると、
その方法(方法1)と、上の方法(方法2)が同じ結果を出す確率です。
例えば結果が、1, 2, 3, ...となった場合、
方法2では、random(100 - i)が全部1を返した事になります。
そこで、方法1がデタラメに値を出して1, 2, 3...となった確率と
random(100 - i) が全部1 を返した確率は同じか?と思ったのでした。
randomは真の乱数を返すとします。
ここでは関数の実装方法による出目の確率は問題にしません。
■ このスレッドは過去ログ倉庫に格納されています