RandomSampling

RandomHelper.RandomSampling(all_count, sample_count)

ソース

RandomSampling(all_count, sample_count) {
    if (!sample_count) {
        // サンプリングする数が指定されてない場合

        // すべてサンプリングする。
        sample_count = all_count;
    }
    var ret = new Array(sample_count);

    var numbers = new Int32Array(all_count);
    for (var i = 0; i < all_count; i++) {
        numbers[i] = i;
    }

    for (var i = 0; i < sample_count; i++) {
        var n = this.getRandomInt(0, all_count - i - 1);

        ret[i] = numbers[n];
        numbers[n] = numbers[all_count - i - 1];
    }

    //for (var i = 0; i < sample_count; i++) {
    //    for (var j = i + 1; j < sample_count; j++) {
    //        Assert(ret[i] != ret[j], "Random-Sampling");
    //    }
    //}

    return ret;
}