HOME



picture info

Xorshift
Xorshift random number generators, also called shift-register generators, are a class of pseudorandom number generators that were invented by George Marsaglia. They are a subset of linear-feedback shift registers (LFSRs) which allow a particularly efficient implementation in software without the excessive use of sparse polynomials. They generate the next number in their sequence by repeatedly taking the exclusive or of a number with a bit-shifted version of itself. This makes execution extremely efficient on modern computer architectures, but it does not benefit efficiency in a hardware implementation. Like all LFSRs, the parameters have to be chosen very carefully in order to achieve a long period. For execution in software, xorshift generators are among the fastest PRNGs, requiring very small code and state. However, they do not pass every statistical test without further refinement. This weakness is amended by combining them with a non-linear function, as described in the ori ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  




Pseudorandom Number Generator
A pseudorandom number generator (PRNG), also known as a deterministic random bit generator (DRBG), is an algorithm for generating a sequence of numbers whose properties approximate the properties of sequences of random number generation, random numbers. The PRNG-generated sequence is not truly random, because it is completely determined by an initial value, called the PRNG's ''random seed, seed'' (which may include truly random values). Although sequences that are closer to truly random can be generated using hardware random number generators, ''pseudorandom number generators'' are important in practice for their speed in number generation and their reproducibility. PRNGs are central in applications such as simulations (e.g. for the Monte Carlo method), electronic games (e.g. for procedural generation), and cryptography. Cryptographic applications require the output not to be predictable from earlier outputs, and more cryptographically-secure pseudorandom number generator, elabora ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


picture info

Linear-feedback Shift Register
In computing, a linear-feedback shift register (LFSR) is a shift register whose input bit is a Linear#Boolean functions, linear function of its previous state. The most commonly used linear function of single bits is exclusive-or (XOR). Thus, an LFSR is most often a shift register whose input bit is driven by the XOR of some bits of the overall shift register value. The initial value of the LFSR is called the seed, and because the operation of the register is deterministic, the stream of values produced by the register is completely determined by its current (or previous) state. Likewise, because the register has a finite number of possible states, it must eventually enter a repeating cycle. However, an LFSR with a Primitive polynomial (field theory), well-chosen feedback function can produce a sequence of bits that appears random and has a Maximal length sequence, very long cycle. Applications of LFSRs include generating Pseudorandomness, pseudo-random numbers, Pseudorandom n ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


picture info

Mersenne Twister
The Mersenne Twister is a general-purpose pseudorandom number generator (PRNG) developed in 1997 by and . Its name derives from the choice of a Mersenne prime as its period length. The Mersenne Twister was created specifically to address most of the flaws found in earlier PRNGs. The most commonly used version of the Mersenne Twister algorithm is based on the Mersenne prime 2^-1. The standard implementation of that, MT19937, uses a 32-bit word length. There is another implementation (with five variants) that uses a 64-bit word length, MT19937-64; it generates a different sequence. ''k''-distribution A pseudorandom sequence x_i of ''w''-bit integers of period ''P'' is said to be ''k-distributed'' to ''v''-bit accuracy if the following holds. : Let trunc''v''(''x'') denote the number formed by the leading ''v'' bits of ''x'', and consider ''P'' of the ''kv''-bit vectors :: (\operatorname_v(x_i), \operatorname_v(x_), \, \ldots, \operatorname_v(x_)) \quad (0\leq i. The Mersenn ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Diehard Tests
The diehard tests are a battery of statistical tests for measuring the quality of a random number generator (RNG). They were developed by George Marsaglia over several years and first published in 1995 on a CD-ROM of random numbers. In 2006, the original diehard tests were extended into the dieharder tests. Most of the tests in DIEHARD return a ''p''-value, which should be uniform on [0,1) if the input file contains truly independent random bits. Those ''p''-values are obtained by ''p'' = ''F''(''X''), where ''F'' is the assumed distribution of the sample random variable ''X'' – often normal. But that assumed ''F'' is just an asymptotic approximation, for which the fit will be worst in the tails. Thus you should not be surprised with occasional ''p''-values near 0 or 1, such as 0.0012 or 0.9983. When a bit stream really FAILS BIG, you will get ''p''s of 0 or 1 to six or more places. Since there are many tests, it is not unlikely that a ''p'' 0.975 means that the RNG has "failed ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


TestU01
TestU01 is a software library, implemented in the ANSI C language, that offers a collection of utilities for the empirical randomness testing of random number generators (RNGs).The TestU01 web site
The library was first introduced in 2007 by Pierre L’Ecuyer and Richard Simard of the .Pierre L’Ecuyer & Richard Simard (2007),
TestU01: A Software Library in ANSI C for Empirical Testing of Random Number Generators
, ''

Sebastiano Vigna
Sebastiano Vigna (born 1967) is a professor of computer science at the University of Milan. He created the xorshift+ and xoroshiro128+ pseudorandom number generators. Xorshift128+ is used in the JavaScript engines of Chrome, Firefox, and Safari. In 1991, he received a laurea in Mathematics and in 1996 a Ph.D. in computer science; both from the University of Milan. He developed UbiCrawler, a web crawler, in a collaboration with others. He worked extensively on graph algorithms such as HyperBall. He used this algorithm, together with researchers from Facebook and others, to compute the degrees of separation on the global Facebook network Network, networking and networked may refer to: Science and technology * Network theory, the study of graphs as a representation of relations between discrete objects * Network science, an academic field that studies complex networks Mathematics ..., which resulted in an average distance of 4.74. References 1967 births Living people It ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


picture info

George Marsaglia
George Marsaglia (March 12, 1924 – February 15, 2011) was an American mathematician and computer scientist. He is best known for creating the diehard tests, a suite of software for measuring statistical randomness. Research on random numbers George Marsaglia established the lattice structure of linear congruential generators in the paper "Random numbers fall mainly in the planes", later termed Marsaglia's theorem. This phenomenon means that ''n''-tuples with coordinates obtained from consecutive use of the generator will lie on a small number of equally spaced hyperplanes in ''n''-dimensional space. He also developed the diehard tests, a series of tests to determine whether or not a sequence of numbers have the statistical properties that could be expected from a random sequence. In 1995 he published a CD-ROM of random numbers, which included the diehard tests. His diehard paper came with the quotation "Nothing is random, only uncertain" attributed to ''Gail Gasram'', ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


picture info

C (programming Language)
C (''pronounced'' '' – like the letter c'') is a general-purpose programming language. It was created in the 1970s by Dennis Ritchie and remains very widely used and influential. By design, C's features cleanly reflect the capabilities of the targeted Central processing unit, CPUs. It has found lasting use in operating systems code (especially in Kernel (operating system), kernels), device drivers, and protocol stacks, but its use in application software has been decreasing. C is commonly used on computer architectures that range from the largest supercomputers to the smallest microcontrollers and embedded systems. A successor to the programming language B (programming language), B, C was originally developed at Bell Labs by Ritchie between 1972 and 1973 to construct utilities running on Unix. It was applied to re-implementing the kernel of the Unix operating system. During the 1980s, C gradually gained popularity. It has become one of the most widely used programming langu ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  




Double-precision Floating-point Format
Double-precision floating-point format (sometimes called FP64 or float64) is a floating-point number format, usually occupying 64 bits in computer memory; it represents a wide range of numeric values by using a floating radix point. Double precision may be chosen when the range or precision of single precision would be insufficient. In the IEEE 754 standard, the 64-bit base-2 format is officially referred to as binary64; it was called double in IEEE 754-1985. IEEE 754 specifies additional floating-point formats, including 32-bit base-2 ''single precision'' and, more recently, base-10 representations (decimal floating point). One of the first programming languages to provide floating-point data types was Fortran. Before the widespread adoption of IEEE 754-1985, the representation and properties of floating-point data types depended on the computer manufacturer and computer model, and upon decisions made by programming-language implementers. E.g., GW-BASIC's double-precision ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


picture info

Hamming Weight
The Hamming weight of a string (computer science), string is the number of symbols that are different from the zero-symbol of the alphabet used. It is thus equivalent to the Hamming distance from the all-zero string of the same length. For the most typical case, a given set of bits, this is the number of bits set to 1, or the digit sum of the Binary numeral system, binary representation of a given number and the Taxicab geometry, ''ℓ''₁ norm of a bit vector. In this binary case, it is also called the population count, popcount, sideways sum, or bit summation. History and usage The Hamming weight is named after the American mathematician Richard Hamming, although he did not originate the notion. The Hamming weight of binary numbers was already used in 1899 by James Whitbread Lee Glaisher, James W. L. Glaisher to give a formula for Gould's sequence, the number of odd binomial coefficients in a single row of Pascal's triangle. Irving S. Reed introduced a concept, equivalen ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Lua (programming Language)
Lua is a lightweight, high-level, multi-paradigm programming language designed mainly for embedded use in applications. Lua is cross-platform software, since the interpreter of compiled bytecode is written in ANSI C, and Lua has a relatively simple C application programming interface ( API) to embed it into applications. Lua originated in 1993 as a language for extending software applications to meet the increasing demand for customization at the time. It provided the basic facilities of most procedural programming languages, but more complicated or domain-specific features were not included; rather, it included mechanisms for extending the language, allowing programmers to implement such features. As Lua was intended to be a general embeddable extension language, the designers of Lua focused on improving its speed, portability, extensibility and ease-of-use in development. History Lua was created in 1993 by Roberto Ierusalimschy, Luiz Henrique de Figueiredo and Wa ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]