From 7aa557a37b73df264afffdc7c00fba47a339aee0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C5=91rinc?= Date: Tue, 15 Jul 2025 14:54:52 -0700 Subject: [PATCH] random: add fixed-size `std::array` generation Co-authored-by: Hodlinator <172445034+hodlinator@users.noreply.github.com> --- src/random.h | 9 +++++++++ src/test/random_tests.cpp | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/random.h b/src/random.h index c702309d0c3..330c10a36b8 100644 --- a/src/random.h +++ b/src/random.h @@ -301,6 +301,15 @@ public: return ret; } + /** Generate fixed-size random bytes. */ + template + std::array randbytes() noexcept + { + std::array ret; + Impl().fillrand(MakeWritableByteSpan(ret)); + return ret; + } + /** Generate a random 32-bit integer. */ uint32_t rand32() noexcept { return Impl().template randbits<32>(); } diff --git a/src/test/random_tests.cpp b/src/test/random_tests.cpp index 3d8b543e64f..538d41125af 100644 --- a/src/test/random_tests.cpp +++ b/src/test/random_tests.cpp @@ -58,7 +58,7 @@ BOOST_AUTO_TEST_CASE(fastrandom_tests_deterministic) BOOST_CHECK_EQUAL(ctx1.rand32(), ctx2.rand32()); BOOST_CHECK_EQUAL(ctx1.rand64(), ctx2.rand64()); BOOST_CHECK_EQUAL(ctx1.randbits(3), ctx2.randbits(3)); - BOOST_CHECK(ctx1.randbytes(17) == ctx2.randbytes(17)); + BOOST_CHECK(std::ranges::equal(ctx1.randbytes(17), ctx2.randbytes<17>())); // check vector/array behavior symmetry BOOST_CHECK(ctx1.rand256() == ctx2.rand256()); BOOST_CHECK_EQUAL(ctx1.randbits(7), ctx2.randbits(7)); BOOST_CHECK(ctx1.randbytes(128) == ctx2.randbytes(128));