---
title: GKLinearCongruentialRandomSource
framework: gameplaykit
role: symbol
role_heading: Class
path: gameplaykit/gklinearcongruentialrandomsource
---

# GKLinearCongruentialRandomSource

A basic random number generator implementing the linear congruential generator algorithm, which is faster but less random than the default random source.

## Declaration

```swift
class GKLinearCongruentialRandomSource
```

## Overview

Overview important: The randomization services provided in GameplayKit are suitable for reliably creating deterministic, pseudorandom gameplay mechanics, but are not cryptographically robust. For cryptography, obfuscation, or cipher uses, use the Security framework, described in Cryptographic Services Guide. To generate basic random values with this random source, use the methods defined in the GKRandom protocol. To generate random values with a specific range and distribution, use this random source with the GKRandomDistribution class or one of its subclasses. When you create an instance of this class, the resulting random source is both independent and deterministic—that is, the sequence of numbers generated by one instance has no effect on the sequence generated by any other instance, and that sequence can be replicated when necessary. For details on replicating sequences, see the seed property and init(seed:) initializer. The linear congruential random source uses the algorithm described by Donald E. Knuth in The Art of Computer Programming, Volume 2: Seminumerical Algorithms, section 3.2.1, with the common seed mask value of 0x5DEECE66D. This random source is therefore compatible with other implementations of that algorithm, including the java.util.Random class in Java. That is, if you initialize a GKLinearCongruentialRandomSource instance and a compatible implementation using the same seed value, both generate the same sequence of numbers. For more information on choosing and using randomizers in GameplayKit, read Randomization in GameplayKit Programming Guide.

## Topics

### Creating a Random Source

- [init()](gameplaykit/gklinearcongruentialrandomsource/init().md)
- [init(seed:)](gameplaykit/gklinearcongruentialrandomsource/init(seed:).md)

### Replicating Random Behavior

- [seed](gameplaykit/gklinearcongruentialrandomsource/seed.md)

## Relationships

### Inherits From

- [GKRandomSource](gameplaykit/gkrandomsource.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [GKRandom](gameplaykit/gkrandom.md)
- [Hashable](swift/hashable.md)
- [NSCoding](foundation/nscoding.md)
- [NSCopying](foundation/nscopying.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)
- [NSSecureCoding](foundation/nssecurecoding.md)

## See Also

### Randomization

- [GKRandom](gameplaykit/gkrandom.md)
- [GKRandomSource](gameplaykit/gkrandomsource.md)
- [GKARC4RandomSource](gameplaykit/gkarc4randomsource.md)
- [GKMersenneTwisterRandomSource](gameplaykit/gkmersennetwisterrandomsource.md)
- [GKRandomDistribution](gameplaykit/gkrandomdistribution.md)
- [GKGaussianDistribution](gameplaykit/gkgaussiandistribution.md)
- [GKShuffledDistribution](gameplaykit/gkshuffleddistribution.md)
