Skip to content

Commit

Permalink
model: Ensure the seed is initialized with current timestamp when it …
Browse files Browse the repository at this point in the history
…is None
  • Loading branch information
rht committed Sep 21, 2023
1 parent 3dbabfe commit f46f78c
Showing 1 changed file with 9 additions and 1 deletion.
10 changes: 9 additions & 1 deletion mesa/model.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
# Remove this __future__ import once the oldest supported Python is 3.10
from __future__ import annotations

import datetime
import random

# mypy
Expand All @@ -21,7 +22,14 @@ class Model:
def __new__(cls, *args: Any, **kwargs: Any) -> Any:
"""Create a new model object and instantiate its RNG automatically."""
obj = object.__new__(cls)
obj._seed = kwargs.get("seed", None)
obj._seed = kwargs.get("seed")
if obj._seed is None:
# We explicitly specify the seed here so that we know its value in
# advance. Note: datetime.now().timestamp() is more cross-platform
# than using time.time(), and ensures the precisions is
# microsecond.
current_timestamp = datetime.datetime.now(datetime.timezone.utc).timestamp()
obj._seed = current_timestamp
obj.random = random.Random(obj._seed)
return obj

Expand Down

0 comments on commit f46f78c

Please sign in to comment.