18

Rsample()の関数を使用して、データセットから n 行をランダムに選択したいと考えています。毎回異なる出力を取得していたため、関数を使用して同じ出力を取得しました。の各整数が一意の出力を提供し、同じシードを設定すると出力が同じになることを知っています。しかし、関数にパラメーターとして渡される整数が何を意味するのかわかりません。ランダム ジェネレーター アルゴリズムに入る単なるインデックスですか、それともサンプリングを開始するデータの一部を意味するのでしょうか? たとえば、in とはどういう意味ですか?set.seed()set.seed()set.seed()2set.seed(2)

4

3 に答える 3

28

昔は、ランダムな数字のページとページを含む本がありました (もちろん、ランダムな順序で)。

私は、乱数の巨大な本のset.seed(x)ページから乱数の読み取りを開始するようにコンピューターに指示することを考えるのが好きです。データとは何の関係もありませんが、乱数を選択するためのアルゴリズムをどのように開始する必要があります。xx

これは少し簡単かもしれませんが、私は類推が好きです。

于 2013-02-04T19:39:19.720 に答える
11

ランダム シード (またはシード状態、または単にシード) は、疑似乱数ジェネレーターを初期化するために使用される数値 (またはベクトル) です。

疑似乱数ジェネレーターでシードを使用する場合、シードはランダムである必要はありません。数値生成アルゴリズムの性質上、元のシードが無視される限り、アルゴリズムが生成する残りの値は、擬似ランダムな方法で確率分布に従います。

--ウィキペディア

したがって、ランダム関数は次のように実装できます。

int rand_r(unsigned int *seed)
{
    *seed = *seed * 1103515245 + 12345;
    return (*seed % ((unsigned int)RAND_MAX + 1));
}

(glibc から取得したサンプル)

于 2013-02-04T10:22:09.800 に答える
5

これは、乱数ジェネレーターのシードを設定するために使用される単なる数値です。あなたのデータとは何の関係もありません。シードを明示的に指定しない場合、現在の時刻から新しいシードが作成されます。

詳細については、?set.seedヘルプ ページを参照してください。

于 2013-02-04T10:11:06.067 に答える