#/*********************************************************** # rndsamp3.rb -- 無作為抽出 #***********************************************************/ #**** 一様乱数 (線形合同法) ***************************** ULONG_MAX = 4294967295 ULONG_MAX1 = 4294967296 $seed = 1; # 任意 def init_rnd(x) $seed = x end def irnd $seed = ($seed * 1566083941) % ULONG_MAX1 + 1 return $seed end def rnd # 0 <= rnd() < 1 return (1.0 / (ULONG_MAX + 1.0)) * irnd() end #******************************************************** N = 100 M = 50 s = Array.new(N).fill(0) init_rnd(Time.new.to_i) for i in (N-M)...N j = ((i + 1) * rnd()).to_i # 0 <= j <= i if (s[j] == 0); s[j] = 1 else; s[i] = 1 end end for i in 0...N if (s[i] == 0); printf(" %4d", i + 1); end end printf("\n") exit 0