• Places
    • Home
    • Graphs
    • Prefixes
  • Admin
    • Users
    • Settings
    • Plugins
    • Statistics
  • CPACK
    • Home
    • List packs
    • Submit pack
  • Repository
    • Load local file
    • Load from HTTP
    • Load from library
    • Remove triples
    • Clear repository
  • Query
    • YASGUI SPARQL Editor
    • Simple Form
    • SWISH Prolog shell
  • Help
    • Documentation
    • Tutorial
    • Roadmap
    • HTTP Services
  • Login

4.27.2.6 Arithmetic Functions
All Application Manual Name SummaryHelp

  • Documentation
    • Reference manual
      • Built-in Predicates
        • Arithmetic
          • General purpose arithmetic
            • Arithmetic Functions
              • -/1
              • +/1
              • +/2
              • -/2
              • */2
              • //2
              • mod/2
              • rem/2
              • ///2
              • div/2
              • rdiv/2
              • gcd/2
              • lcm/2
              • abs/1
              • sign/1
              • cmpr/2
              • copysign/2
              • nexttoward/2
              • roundtoward/2
              • max/2
              • maxr/2
              • min/2
              • minr/2
              • ./2
              • random/1
              • random_float/0
              • round/1
              • integer/1
              • float/1
              • rational/1
              • rationalize/1
              • numerator/1
              • denominator/1
              • float_fractional_part/1
              • float_integer_part/1
              • truncate/1
              • floor/1
              • ceiling/1
              • ceil/1
              • >>/2
              • <</2
              • \//2
              • /\/2
              • xor/2
              • \/1
              • sqrt/1
              • sin/1
              • cos/1
              • tan/1
              • asin/1
              • acos/1
              • atan/1
              • atan2/2
              • atan/2
              • sinh/1
              • cosh/1
              • tanh/1
              • asinh/1
              • acosh/1
              • atanh/1
              • log/1
              • log10/1
              • exp/1
              • **/2
              • ^/2
              • powm/3
              • lgamma/1
              • erf/1
              • erfc/1
              • pi/0
              • e/0
              • epsilon/0
              • inf/0
              • nan/0
              • cputime/0
              • eval/1
              • msb/1
              • lsb/1
              • popcount/1
              • getbit/2
    • Packages
Availability:Arithmetic function (see is/2)
random(+IntExpr)
Evaluate to a random integer i for which 0 ≤i < IntExpr. The system has two implementations. If it is compiled with support for unbounded arithmetic (default) it uses the GMP library random functions. In this case, each thread keeps its own random state. The default algorithm is the Mersenne Twister algorithm. The seed is set when the first random number in a thread is generated. If available, it is set from /dev/random.128On Windows the state is initialised from CryptGenRandom(). Otherwise it is set from the system clock. If unbounded arithmetic is not supported, random numbers are shared between threads and the seed is initialised from the clock when SWI-Prolog was started. The predicate set_random/1 can be used to control the random number generator.

Warning! Although properly seeded (if supported on the OS), the Mersenne Twister algorithm does not produce cryptographically secure random numbers. To generate cryptographically secure random numbers, use crypto_n_random_bytes/2 from library library(crypto) provided by the ssl package.

ClioPatria (version V3.1.1-51-ga0b30a5)