random: support random on sets.
parent
cf3c197743
commit
e8d50a2d08
|
@ -2,11 +2,12 @@
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: accessors alien.data arrays assocs byte-arrays
|
USING: accessors alien.data arrays assocs byte-arrays
|
||||||
byte-vectors combinators combinators.short-circuit fry
|
byte-vectors combinators combinators.short-circuit fry
|
||||||
hashtables hashtables.private hints io.backend io.binary
|
hashtables hashtables.private hash-sets hints io.backend
|
||||||
kernel locals math math.bitwise math.constants math.functions
|
io.binary kernel locals math math.bitwise math.constants
|
||||||
math.order math.ranges namespaces sequences sequences.private
|
math.functions math.order math.ranges namespaces sequences
|
||||||
sets summary system typed vocabs ;
|
sequences.private sets summary system typed vocabs ;
|
||||||
QUALIFIED-WITH: alien.c-types c
|
QUALIFIED-WITH: alien.c-types c
|
||||||
|
QUALIFIED-WITH: sets sets
|
||||||
IN: random
|
IN: random
|
||||||
|
|
||||||
SYMBOL: system-random-generator
|
SYMBOL: system-random-generator
|
||||||
|
@ -83,6 +84,10 @@ M: hashtable random
|
||||||
[ array-nth ] [ [ 1 + ] dip array-nth ] 2bi 2array
|
[ array-nth ] [ [ 1 + ] dip array-nth ] 2bi 2array
|
||||||
] if-zero ;
|
] if-zero ;
|
||||||
|
|
||||||
|
M: sets:set random members random ;
|
||||||
|
|
||||||
|
M: hash-set random table>> random first ;
|
||||||
|
|
||||||
: randomize-n-last ( seq n -- seq )
|
: randomize-n-last ( seq n -- seq )
|
||||||
[ dup length dup ] dip - 1 max '[ dup _ > ]
|
[ dup length dup ] dip - 1 max '[ dup _ > ]
|
||||||
[ [ random ] [ 1 - ] bi [ pick exchange-unsafe ] keep ]
|
[ [ random ] [ 1 - ] bi [ pick exchange-unsafe ] keep ]
|
||||||
|
|
Loading…
Reference in New Issue