challenge n人中m人が当選するくじ

n人の中から公平にm人を選ぶ、くじ引きプログラムを作ってください。

Posted feedbacks - Vim

我ながら強引すぎるな... (libcは動くかどうかわかりません汗)「:echo Lot(10, 5)」で実行
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
fun! Lot(n, m)
  let v = range(1, a:n)
  while len(v) > a:m
    if has('win32')
      let r = libcallnr("msvcrt", "rand", 0)
    else
      let r = libcallnr("libc", "rand", 0)
    endif
    silent! call remove(v, (r % 10))
  endwhile
  return v
endfun

あ、ハードコーディング...orz
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
fun! Lot(n, m)
  let v = range(1, a:n)
  while len(v) > a:m
    if has('win32')
      let r = libcallnr("msvcrt", "rand", 0)
    else
      let r = libcallnr("libc", "rand", 0)
    endif
    silent! call remove(v, (r % len(v)))
  endwhile
  return v
endfun

Index

Feed

Other

Link

Pathtraq

loading...