best init
diff --git a/quic/core/crypto/quic_random.cc b/quic/core/crypto/quic_random.cc
index 56657b5..e97bc7c 100644
--- a/quic/core/crypto/quic_random.cc
+++ b/quic/core/crypto/quic_random.cc
@@ -23,13 +23,18 @@
   return (x << k) | (x >> (64 - k));
 }
 
+inline uint64_t Xoshiro256InitializeRngStateMember() {
+  uint64_t result;
+  RAND_bytes(reinterpret_cast<uint8_t*>(&result), sizeof(result));
+  return result;
+}
+
 uint64_t Xoshiro256PlusPlus() {
-  static thread_local uint64_t rng_state[4];
-  static thread_local bool rng_state_initialized = false;
-  if (QUIC_PREDICT_FALSE(!rng_state_initialized)) {
-    RAND_bytes(reinterpret_cast<uint8_t*>(&rng_state), sizeof(rng_state));
-    rng_state_initialized = true;
-  }
+  static thread_local uint64_t rng_state[4] = {
+    Xoshiro256InitializeRngStateMember(),
+    Xoshiro256InitializeRngStateMember(),
+    Xoshiro256InitializeRngStateMember(),
+    Xoshiro256InitializeRngStateMember()};
   const uint64_t result =
       Xoshiro256PlusPlusRotLeft(rng_state[0] + rng_state[3], 23) + rng_state[0];
   const uint64_t t = rng_state[1] << 17;