Advertisement
Guest User

Untitled

a guest
Jan 29th, 2017
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Julia 0.74 KB | None | 0 0
  1. function getUrnIdx(urns::Array, D::Int64, N::Int64)
  2.   group = zeros(Int64, 0)
  3.  
  4.   while length(group) != D
  5.     idx = rand(1:N)
  6.     if !in(idx, group)
  7.       push!(group, idx)
  8.     end
  9.   end
  10.  
  11.   values = zeros(Int64, length(group))
  12.   for i in 1:length(group)
  13.     values[i] = urns[group[i]]
  14.   end
  15.  
  16.   minIdx = indmin(values)
  17.   min = values[minIdx]
  18.  
  19.   indices = zeros(Int64, 0)
  20.   push!(indices, group[minIdx])
  21.   splice!(values, minIdx)
  22.   splice!(group, minIdx)
  23.  
  24.   while length(values) > 0 && min == values[indmin(values)]
  25.     push!(indices, group[minIdx])
  26.     splice!(values, minIdx)
  27.     splice!(group, minIdx)
  28.   end
  29.  
  30.   urnIdx = indices[1]
  31.   if length(indices) > 1
  32.     urnIdx = rand(1:length(indices))
  33.   end
  34.  
  35.   return urnIdx
  36. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement