diff --git a/README.rst b/README.rst
index 4dc04a86..0941dbda 100644
--- a/README.rst
+++ b/README.rst
@@ -263,13 +263,26 @@ How to use with factory-boy
         title = factory.LazyAttribute(lambda x: faker.sentence(nb_words=4))
         author_name = factory.LazyAttribute(lambda x: faker.name())
 
+Accessing the `random` instance
+-------------------------------
+
+The ``.random`` property on the generator returns the instance of ``random.Random``
+used to generate the values:
+
+__ code:: python
+
+    from faker import Faker
+    fake = Faker()
+    fake.random
+    fake.random.getstate()
+
 Seeding the Generator
 ---------------------
 
 When using Faker for unit testing, you will often want to generate the same
-data set. The generator offers a  ``seed()`` method, which seeds the random
-number generator. Calling the same script twice with the same seed produces the
-same results.
+data set. For convenience, the generator also provide a ``seed()`` method, which
+seeds the random number generator. Calling the same script twice with the same
+seed produces the same results.
 
 .. code:: python
 
@@ -280,8 +293,20 @@ same results.
     print fake.name()
     > Margaret Boehm
 
+The code above is equivalent to the following:
+
+.. code:: python
+
+    from faker import Faker
+    fake = Faker()
+    faker.random.seed(4321)
+
+    print fake.name()
+    > Margaret Boehm
+
 Tests
 -----
+
 Installing dependencies:
 
 .. code:: bash
diff --git a/docs/index.rst b/docs/index.rst
index 601d474d..7e96203c 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -264,13 +264,26 @@ How to use with factory-boy
         title = factory.LazyAttribute(lambda x: faker.sentence(nb_words=4))
         author_name = factory.LazyAttribute(lambda x: faker.name())
 
+Accessing the `random` instance
+-------------------------------
+
+The ``.random`` property on the generator returns the instance of ``random.Random``
+used to generate the values:
+
+__ code:: python
+
+    from faker import Faker
+    fake = Faker()
+    fake.random
+    fake.random.getstate()
+
 Seeding the Generator
 ---------------------
 
 When using Faker for unit testing, you will often want to generate the same
-data set. The generator offers a  ``seed()`` method, which seeds the random
-number generator. Calling the same script twice with the same seed produces the
-same results.
+data set. For convenience, the generator also provide a ``seed()`` method, which
+seeds the random number generator. Calling the same script twice with the same
+seed produces the same results.
 
 .. code:: python
 
@@ -281,6 +294,17 @@ same results.
     print fake.name()
     > Margaret Boehm
 
+The code above is equivalent to the following:
+
+.. code:: python
+
+    from faker import Faker
+    fake = Faker()
+    faker.random.seed(4321)
+
+    print fake.name()
+    > Margaret Boehm
+
 Tests
 -----
 
diff --git a/faker/generator.py b/faker/generator.py
index 95dfac2a..74034cb4 100644
--- a/faker/generator.py
+++ b/faker/generator.py
@@ -50,6 +50,10 @@ class Generator(object):
         """Returns added providers."""
         return self.providers
 
+    @property
+    def random(self):
+        return random
+
     def seed(self, seed=None):
         """Calls random.seed"""
         random.seed(seed)

Access to the Generator.random
It would be nice if one could gain access to the Generator.random variable so that one could save/set the state.  I realize I can pass in the seed, but one currently has no way of gathering what the seed/state is if using the automatically generated seed.  I don't want to use a fixed seed, but I do want to log/print the seed used _if_ the tests fail.

That is, I'd like to be able to do something like:  `faker.generator.getstate()` (which gets the random state w/o exposing random) or `faker.generator.random.getstate()` (which gives access to the random variable)

For now, the workaround appears to be to create a Faker object with your own Generator.
diff --git a/faker/tests/__init__.py b/faker/tests/__init__.py
index 6502a448..5dc22528 100644
--- a/faker/tests/__init__.py
+++ b/faker/tests/__init__.py
@@ -518,6 +518,12 @@ class GeneratorTestCase(unittest.TestCase):
     def setUp(self):
         self.generator = Generator()
 
+    @patch('random.getstate')
+    def test_get_random(self, mock_system_random):
+        random_instance = self.generator.random
+        random_instance.getstate()
+        self.assertFalse(mock_system_random.called)
+
     @patch('random.seed')
     def test_random_seed_doesnt_seed_system_random(self, mock_system_random):
         self.generator.seed(0)

pip install -e .
parse_log_pytest
requirements.txt
pytest pytest-cov
apt-get update apt-get install -y gcc
3.9
requirements/base.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
coverage==7.8.0
exceptiongroup==1.2.2
-e git+https://github.com/joke2k/faker.git@807bf01588fd5dd9f680d69d1c6ddd13c255136f#egg=fake_factory
iniconfig==2.1.0
packaging==24.2
pluggy==1.5.0
pytest==8.3.5
pytest-cov==6.0.0
python-dateutil==2.9.0.post0
six==1.17.0
tomli==2.2.1

name: faker
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - pip=25.0=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - coverage==7.8.0
      - exceptiongroup==1.2.2
      - iniconfig==2.1.0
      - packaging==24.2
      - pluggy==1.5.0
      - pytest==8.3.5
      - pytest-cov==6.0.0
      - python-dateutil==2.9.0.post0
      - six==1.17.0
      - tomli==2.2.1
prefix: /opt/conda/envs/faker

faker/tests/__init__.py::GeneratorTestCase::test_get_random
faker/tests/__init__.py::ShimsTestCase::test_counter faker/tests/__init__.py::UtilsTestCase::test_add_dicts faker/tests/__init__.py::UtilsTestCase::test_choice_distribution faker/tests/__init__.py::UtilsTestCase::test_find_available_locales faker/tests/__init__.py::UtilsTestCase::test_find_available_providers faker/tests/__init__.py::FactoryTestCase::test_add_provider_gives_priority_to_newly_added_provider faker/tests/__init__.py::FactoryTestCase::test_command faker/tests/__init__.py::FactoryTestCase::test_command_custom_provider faker/tests/__init__.py::FactoryTestCase::test_date_time_between_dates faker/tests/__init__.py::FactoryTestCase::test_date_time_between_dates_with_tzinfo faker/tests/__init__.py::FactoryTestCase::test_date_time_this_period faker/tests/__init__.py::FactoryTestCase::test_date_time_this_period_with_tzinfo faker/tests/__init__.py::FactoryTestCase::test_datetime_safe faker/tests/__init__.py::FactoryTestCase::test_datetimes_with_and_without_tzinfo faker/tests/__init__.py::FactoryTestCase::test_documentor faker/tests/__init__.py::FactoryTestCase::test_format_calls_formatter_on_provider faker/tests/__init__.py::FactoryTestCase::test_format_transfers_arguments_to_formatter faker/tests/__init__.py::FactoryTestCase::test_get_formatter_returns_callable faker/tests/__init__.py::FactoryTestCase::test_get_formatter_returns_correct_formatter faker/tests/__init__.py::FactoryTestCase::test_get_formatter_throws_exception_on_incorrect_formatter faker/tests/__init__.py::FactoryTestCase::test_magic_call_calls_format faker/tests/__init__.py::FactoryTestCase::test_magic_call_calls_format_with_arguments faker/tests/__init__.py::FactoryTestCase::test_no_words_paragraph faker/tests/__init__.py::FactoryTestCase::test_no_words_sentence faker/tests/__init__.py::FactoryTestCase::test_parse_returns_same_string_when_it_contains_no_curly_braces faker/tests/__init__.py::FactoryTestCase::test_parse_returns_string_with_tokens_replaced_by_formatters faker/tests/__init__.py::FactoryTestCase::test_password faker/tests/__init__.py::FactoryTestCase::test_prefix_suffix_always_string faker/tests/__init__.py::FactoryTestCase::test_random_element faker/tests/__init__.py::FactoryTestCase::test_slugify faker/tests/__init__.py::FactoryTestCase::test_timezone_conversion faker/tests/__init__.py::FactoryTestCase::test_us_ssn_valid faker/tests/__init__.py::GeneratorTestCase::test_random_seed_doesnt_seed_system_random
README.rst docs/index.rst faker/generator.py
README.rst docs/index.rst faker/generator.py