/**
* Random sampling
* by Kazuki Maeda
* Last-Modified: Mar. 15, 2015
*/
window.onload = function(){
document.getElementById('population').addEventListener('keypress', enter, true);
document.getElementById('samplesize').addEventListener('keypress', enter, true);
document.getElementById('sampling').addEventListener('click', sampling, true);
}
function numComp(a, b){
return a-b;
}
function sampling(){
var population = Math.floor(document.getElementById('population').value);
var samplesize = Math.floor(document.getElementById('samplesize').value);
var lang = document.getElementById('lang').value;
if(isNaN(population) || population <= 0){
if(lang == 'en')
document.getElementById('result').innerHTML = 'Specify a positive interger for the size of population.';
else
document.getElementById('result').innerHTML = '母集団の大きさには正の整数を指定して下さい.';
return;
}
if(isNaN(samplesize) || samplesize <= 0){
if(lang == 'en')
document.getElementById('result').innerHTML = 'Specify a positive interger for the size of sample.';
else
document.getElementById('result').innerHTML = '標本の大きさには正の整数を指定して下さい.';
return;
}
if(population <= samplesize){
if(lang == 'en')
document.getElementById('result').innerHTML = 'The size of sample should be less than the size of population.';
else
document.getElementById('result').innerHTML = '標本の大きさは母集団の大きさ未満にして下さい.';
return;
}
var p = population;
var pl = new Array();
for(var i = 0; i < population; ++i)
pl[i] = i+1;
var res = new Array();
for(var i = 0; i < samplesize; ++i){
var r = Math.floor(Math.random()*p);
res[i] = pl[r];
pl.splice(r, 1);
--p;
}
res.sort(numComp);
var result;
if(lang == 'en')
result = 'Result'
else
result = '抽出結果'
result += ' (' + samplesize + '/' + population + '):
';
for(var i = 0; i < samplesize; ++i){
result += res[i];
if(i != samplesize-1)
result += ', ';
}
document.getElementById('result').innerHTML = result + '';
}
function enter(e){
if(e.keyCode == 13)
sampling();
}