KissBitGenerator#
- class scikitplot.random.KissBitGenerator(seed: Optional[Union[int, KissSeedSequence]]=None, int bit_width: int = None)[source]#
NumPy-compatible BitGenerator using KISS algorithm with complete serialization.
- Parameters:
- seed{None, int, SeedSequence, KissSeedSequence}, optional, default=None
Random seed or seed sequence: - int: Direct seed value - SeedSequence: Use its generated state - None: Use OS entropy via secrets.token_bytes()
- bit_widthint, default=None
Generator bit width (32 or 64) - 32: Uses Kiss32Random (faster, period ~2^121) - 64: Uses Kiss64Random (slower, period ~2^250)
- Attributes:
- lockthreading.RLock
Lock for thread-safe access (NumPy protocol requirement)
seed_seqKissSeedSequenceseed_seq: object
See also
Kiss32Random32-bit version for smaller datasets
Kiss64Random64-bit version for larger datasets
KissRandomFactory function for auto-detecting
KissSeedSequenceSeed sequence for initialization
KissGeneratorHigh-level generator using this BitGenerator
KissRandomStateInherites from KissGenerator
default_rngConvenience function to create generator
numpy.random.BitGeneratorNumPy’s BitGenerator base class
Notes
The bit_width parameter determines internal generator: - 32: Uses Kiss32Random (faster, period ~2^121) - 64: Uses Kiss64Random (slower, period ~2^250) - NumPy BitGenerator protocol compatible - Thread-safe via lock - Complete pickle/JSON support
For NumPy compatibility, random_raw() always returns uint64 values regardless of internal bit width.
Examples
>>> bg = KissBitGenerator(42) >>> bg.random_raw() >>> >>> # NOTE: Due to C API differences, use KissGenerator instead >>> # of wrapping in numpy.random.Generator >>> gen = KissGenerator(bg) >>> gen.random(10) >>> >>> # Serialization >>> import pickle >>> restored = pickle.loads(pickle.dumps(bg))
- capsule#
Get PyCapsule for NumPy C API (protocol requirement).
- classmethod deserialize(cls, data)#
Deserialize from dict.
- Parameters:
- datadict
Serialized state
- Returns:
- KissBitGenerator
Restored instance
Examples
>>> import json >>> bg = KissBitGenerator(42) >>> json_str = json.dumps(bg.serialize()) >>> data = json.loads(json_str) >>> restored = KissBitGenerator.deserialize(data)
- classmethod from_dict(cls, data)#
Alias for deserialize().
- get_params(self, deep=True)#
Get parameters (sklearn-style).
- Parameters:
- deepbool, default=True
If True, include nested params
- Returns:
- dict
Parameters
Examples
>>> bg = KissBitGenerator(42) >>> params = bg.get_params()
- get_state(self)#
Get state dictionary.
- Returns:
- dict
Complete state
Examples
>>> bg = KissBitGenerator(42) >>> state = bg.get_state() >>> print("seed_sequence" in state) True
- lock#
!! processed by numpydoc !!
- random_raw(self, size=None, output=True)#
Generate random uint64 values.
- Parameters:
- sizeint, tuple of ints, or None
Output shape
- outputbool, default=True
If True, return values. If False, just advance state.
- Returns:
- int or ndarray
Random uint64 values
Examples
>>> bg = KissBitGenerator(seed=42) >>> bg.random_raw() # Single value <class 'int'>
>>> bg.random_raw(10) # 10 values >>> bg.random_raw((3, 4)) # 3x4 array
- serialize(self)#
Serialize to JSON-compatible dict.
- Returns:
- dict
JSON-serializable state
Examples
>>> import json >>> bg = KissBitGenerator(42) >>> data = bg.serialize() >>> json_str = json.dumps(data)
- set_params(self, **params)#
Set parameters (sklearn-style).
- Parameters:
- **paramsdict
Parameters to set
- Returns:
- self
Examples
>>> bg = KissBitGenerator(42) >>> bg.set_params(seed=123)
- set_state(self, state)#
Set state from dictionary.
- Parameters:
- statedict
State from get_state()
Examples
>>> bg1 = KissBitGenerator(42) >>> state = bg1.get_state() >>> bg2 = KissBitGenerator(0) >>> bg2.set_state(state)
- spawn(self, int n_children: int) list['KissBitGenerator']#
Create independent child BitGenerators (NumPy protocol).
- Parameters:
- n_childrenint
Number of children to spawn
- Returns:
- list of KissBitGenerator
Independent bit generators
- Raises:
- ValueError
If n_children < 1
- Parameters:
n_children (int)
- Return type:
Notes
This is REQUIRED by NumPy’s BitGenerator protocol. Each child is statistically independent.
Examples
>>> bg = KissBitGenerator(42) >>> children = bg.spawn(3) >>> print(len(children)) 3 >>> # Use in parallel workers
- state#
dict
Get state dict (NumPy protocol).
- Type:
- to_dict(self)#
Alias for serialize().
Gallery examples#
Enhanced KISS Random Generator - Complete Usage Examples