mirror of
https://github.com/logos-storage/logos-storage-nim-dht.git
synced 2026-01-07 07:53:06 +00:00
better sample generation for small samples
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
This commit is contained in:
parent
479d6405b6
commit
b2774465f0
21
das/das.nim
21
das/das.nim
@ -72,13 +72,20 @@ proc sample(s: Slice[int], len: int): seq[int] =
|
||||
assert s.a <= s.b
|
||||
var all = s.b - s.a + 1
|
||||
var count = len
|
||||
var generated = newSeq[bool](all) # Initialized to false.
|
||||
while count != 0:
|
||||
let n = rand(s)
|
||||
if not generated[n - s.a]:
|
||||
generated[n - s.a] = true
|
||||
result.add n
|
||||
dec count
|
||||
if len >= all div 10: # add better algo selector
|
||||
var generated = newSeq[bool](all) # Initialized to false.
|
||||
while count != 0:
|
||||
let n = rand(s)
|
||||
if not generated[n - s.a]:
|
||||
generated[n - s.a] = true
|
||||
result.add n
|
||||
dec count
|
||||
else:
|
||||
while count != 0:
|
||||
let n = rand(s)
|
||||
if not (n in result):
|
||||
result.add n
|
||||
dec count
|
||||
|
||||
|
||||
when isMainModule:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user