1 USING: help.markup help.syntax math kernel sequences ;
5 { $values { "tuple" "a random number generator" } { "seed" "an integer between 0 and 2^32-1" } }
6 { $description "Seed the random number generator." }
7 { $notes "Not supported on all random number generators." } ;
10 { $values { "tuple" "a random number generator" } { "r" "an integer between 0 and 2^32-1" } }
11 { $description "Generates a random 32-bit unsigned integer." } ;
14 { $values { "n" "an integer" } { "tuple" "a random number generator" } { "byte-array" "a sequence of random bytes" } }
15 { $description "Generates a byte-array of random bytes." } ;
18 { $values { "seq" sequence } { "elt" "a random element" } }
19 { $description "Outputs a random element of the input sequence. Outputs " { $link f } " if the sequence is empty." }
20 { $notes "Since integers are sequences, passing an integer " { $snippet "n" } " outputs an integer in the interval " { $snippet "[0,n)" } "." }
22 { $unchecked-example "USING: random prettyprint ;"
25 { $unchecked-example "USING: random prettyprint ;"
28 "{ heads tails } random ."
33 { $values { "n" "an integer" } { "byte-array" "a random integer" } }
34 { $description "Outputs an integer with n bytes worth of bits." }
36 { $unchecked-example "USING: prettyprint random ;"
38 "B{ 135 50 185 119 240 }"
43 { $values { "n" "an integer" } { "r" "a random integer" } }
44 { $description "Outputs an random integer n bits in length." } ;
47 { $values { "tuple" "a random generator" } { "quot" "a quotation" } }
48 { $description "Calls the quotation with the random generator in a dynamic variable. All random numbers will be generated using this random generator." } ;
50 HELP: with-secure-random
51 { $values { "quot" "a quotation" } }
52 { $description "Calls the quotation with the secure random generator in a dynamic variable. All random numbers will be generated using this random generator." } ;
54 HELP: with-system-random
55 { $values { "quot" "a quotation" } }
56 { $description "Calls the quotation with the system's random generator in a dynamic variable. All random numbers will be generated using this random generator." } ;
58 { with-random with-secure-random with-system-random } related-words
64 { $description "Deletes a random number from a sequence using " { $link delete-nth } " and returns the deleted object." } ;
66 ARTICLE: "random-protocol" "Random protocol"
67 "A random number generator must implement one of these two words:"
68 { $subsection random-32* }
69 { $subsection random-bytes* }
70 "Optional, to seed a random number generator:"
71 { $subsection seed-random } ;
73 ARTICLE: "random" "Generating random integers"
74 "The " { $vocab-link "random" } " vocabulary contains a protocol for generating random or pseudorandom numbers."
76 "The “Mersenne Twister” pseudorandom number generator algorithm is the default generator stored in " { $link random-generator } "."
78 "Generate a random object:"
79 { $subsection random }
80 "Combinators to change the random number generator:"
81 { $subsection with-random }
82 { $subsection with-system-random }
83 { $subsection with-secure-random }
85 { $subsection "random-protocol" }
86 "Deleting a random element from a sequence:"
87 { $subsection delete-random } ;