Kiss64Random#

class scikitplot.random.Kiss64Random(int seed: int | None = None)[source]#

Low-level 64-bit KISS RNG with context manager support.

This class provides direct access to the C++ Kiss64Random implementation. For most use cases, prefer KissGenerator or default_rng() instead. Period: ~2^250 (suitable for billions of data points)

Parameters:
seedint or None, default=None

Initial seed value. If None, uses default seed (1234567890987654321). Must be in range [0, 2^64-1].

Attributes:
default_seedint

Default seed value (1234567890987654321)

seedint

Kiss64Random.seed: int

lockthreading.RLock

Thread lock (for shared access)

See also

Kiss32Random

32-bit version for smaller datasets

KissRandom

Factory function for auto-detecting

KissSeedSequence

Seed sequence for initialization

KissBitGenerator

NumPy-compatible bit generator

KissGenerator

High-level generator using this BitGenerator

KissRandomState

Inherites from KissGenerator

default_rng

Convenience function to create generator

Notes

  • Period: approximately 2^250

  • Not cryptographically secure

  • Recommended for datasets larger than ~16 million points

  • Slightly slower than Kiss32Random but much longer period

  • Thread-safe via context manager

  • Deterministic: same seed → same sequence

  • Complete pickle/JSON support

  • Preferred for large-scale applications

Examples

>>> rng = Kiss64Random(42)
>>> rng.kiss()  # Random uint64
>>>
>>> # Context manager (thread-safe)
>>> with rng:
...     value = rng.kiss()
>>>
>>> # Serialization
>>> import pickle
>>> restored = pickle.loads(pickle.dumps(rng))
default_seed = 1234567890987654321#
classmethod deserialize(cls, data)#

Deserialize from dict.

Parameters:
datadict

Serialized state

Returns:
Kiss64Random

Restored instance

Examples

>>> import json
>>> rng = Kiss64Random(42)
>>> json_str = json.dumps(rng.serialize())
>>> data = json.loads(json_str)
>>> restored = Kiss64Random.deserialize(data)
flip(self) int#

Generate random binary value (0 or 1).

classmethod from_dict(cls, data)#

Alias for deserialize().

static get_default_seed() int#

Get default seed value.

Return type:

int

get_params(self, deep=True)#

Get parameters (sklearn-style).

Parameters:
deepbool, default=True

Unused, for sklearn compatibility

Returns:
dict

Constructor parameters

Examples

>>> rng = Kiss64Random(42)
>>> params = rng.get_params()
>>> print(params)
{'seed': 42}
get_state(self)#

Get state dictionary.

Returns:
dict

Complete state

Examples

>>> rng = Kiss64Random(42)
>>> state = rng.get_state()
>>> print(state["seed"])
42
index(self, size_t n) size_t#

Generate random index in range [0, n-1].

kiss(self) uint64_t#

Generate next random 64-bit unsigned integer.

Returns:
int

Random value in [0, 2^64-1]

lock#

!! processed by numpydoc !!

static normalize_seed(int seed: int) int#

Normalize seed to valid non-zero value.

Parameters:

seed (int)

Return type:

int

reset(self, int seed: int) None#

Reset RNG state with new seed.

Parameters:

seed (int)

Return type:

None

reset_default(self) None#

Reset to default seed.

Return type:

None

seed#

int

Get current seed value.

Type:

Kiss64Random.seed

serialize(self)#

Serialize to JSON-compatible dict.

Returns:
dict

JSON-serializable state

Examples

>>> import json
>>> rng = Kiss64Random(42)
>>> data = rng.serialize()
>>> json_str = json.dumps(data)
set_params(self, **params)#

Set parameters (sklearn-style).

Parameters:
**paramsdict

Parameters to set

Returns:
self

For chaining

Examples

>>> rng = Kiss64Random(42)
>>> rng.set_params(seed=123)
>>> print(rng.seed)
123
set_seed(self, int seed: int) None#

Set new seed (alias for reset).

Parameters:

seed (int)

Return type:

None

set_state(self, state)#

Set state from dictionary.

Parameters:
statedict

State from get_state()

Examples

>>> rng1 = Kiss64Random(42)
>>> state = rng1.get_state()
>>> rng2 = Kiss64Random(0)
>>> rng2.set_state(state)
to_dict(self)#

Alias for serialize().