internal/internal-seed.hpp
- View this file on GitHub
- Last update: 2026-06-27 14:52:13+09:00
- Include:
#include "internal/internal-seed.hpp"
Required by
hashmap/hashmap-unerasable.hpp
ハッシュ関数
(internal/internal-hash-function.hpp)
marathon/multi-armed-bandit.hpp
Multipoint Simulated Annealing
(marathon/sa-manager.hpp)
marathon/top-k.hpp
math/primitive-root-ll.hpp
math/two-square.hpp
Black Box Linear Algebra
(matrix/black-box-linear-algebra.hpp)
misc/all.hpp
misc/rng.hpp
kth root(Tonelli-Shanks algorithm)
(modulo/mod-kth-root.hpp)
多変数巡回畳み込み
(ntt/multivariate-circular-convolution.hpp)
ntt/ntt-64bit.hpp
高速素因数分解(Miller Rabin/Pollard's Rho)
(prime/fast-factorize.hpp)
遅延伝搬反転可能Treap
(rbst/treap.hpp)
string/number-of-subsequences.hpp
Pruefer Code
(tree/pruefer-code.hpp)
Verified with
verify/verify-aoj-other/aoj-1068.test.cpp
verify/verify-aoj-other/aoj-1377.test.cpp
verify/verify-aoj-other/aoj-2171-bigrational.test.cpp
verify/verify-unit-test/arbitrary-modint.test.cpp
verify/verify-unit-test/arbitrary-ntt-mod18446744069414584321.test.cpp
verify/verify-unit-test/barrett-reduction.test.cpp
verify/verify-unit-test/bigint-gcd.test.cpp
verify/verify-unit-test/bigint.test.cpp
verify/verify-unit-test/bigint2.test.cpp
verify/verify-unit-test/bigint3.test.cpp
verify/verify-unit-test/bigrational.test.cpp
verify/verify-unit-test/complex-fft.test.cpp
verify/verify-unit-test/composite-exp.test.cpp
verify/verify-unit-test/composition.test.cpp
verify/verify-unit-test/dijkstra.test.cpp
verify/verify-unit-test/dynamic-diameter-faster.test.cpp
verify/verify-unit-test/dynamic-diameter.test.cpp
verify/verify-unit-test/enumerate-convex.test.cpp
verify/verify-unit-test/enumerate-quotient.test.cpp
verify/verify-unit-test/factorize.test.cpp
verify/verify-unit-test/fast-bs.test.cpp
verify/verify-unit-test/fast-inv-o1.test.cpp
verify/verify-unit-test/fast-inv.test.cpp
verify/verify-unit-test/fft2d.test.cpp
verify/verify-unit-test/fps-sparse.test.cpp
verify/verify-unit-test/fps.test.cpp
verify/verify-unit-test/garner-bigint.test.cpp
verify/verify-unit-test/garner.test.cpp
verify/verify-unit-test/gauss-elimination.test.cpp
verify/verify-unit-test/internal-math.test.cpp
verify/verify-unit-test/internal-type-traits.test.cpp
verify/verify-unit-test/interval-union.test.cpp
verify/verify-unit-test/karatsuba.test.cpp
verify/verify-unit-test/lazyseg-bsearch.test.cpp
verify/verify-unit-test/lazyseg-setval-2.test.cpp
verify/verify-unit-test/lazyseg-setval.test.cpp
verify/verify-unit-test/li-chao-tree-abstract.test.cpp
verify/verify-unit-test/manacher.test.cpp
verify/verify-unit-test/math.test.cpp
verify/verify-unit-test/modint-2-61m1.test.cpp
verify/verify-unit-test/modint.test.cpp
verify/verify-unit-test/multieval.test.cpp
verify/verify-unit-test/multiplicative-function.test.cpp
verify/verify-unit-test/multipoint-binomial-sum.test.cpp
verify/verify-unit-test/nimber.test.cpp
verify/verify-unit-test/ntt-64bit.test.cpp
verify/verify-unit-test/orderedmap.test.cpp
verify/verify-unit-test/osak.test.cpp
verify/verify-unit-test/parallel-union-find.test.cpp
verify/verify-unit-test/partial-fraction-decomposition.test.cpp
verify/verify-unit-test/polynomial-matrix-prod.test.cpp
verify/verify-unit-test/primality-test.test.cpp
verify/verify-unit-test/primitive-root.test.cpp
verify/verify-unit-test/radix-heap.test.cpp
verify/verify-unit-test/radix-sort.test.cpp
verify/verify-unit-test/rational-number.test.cpp
verify/verify-unit-test/rbst-segment-tree.test.cpp
verify/verify-unit-test/rbst-sequence.test.cpp
verify/verify-unit-test/relaxed-convolution.test.cpp
verify/verify-unit-test/rerooting.test.cpp
verify/verify-unit-test/run-length-encoding.test.cpp
verify/verify-unit-test/sa-manager.test.cpp
verify/verify-unit-test/segment-set.test.cpp
verify/verify-unit-test/segment-tree-beats.test.cpp
verify/verify-unit-test/semiring.test.cpp
verify/verify-unit-test/set-function.test.cpp
verify/verify-unit-test/simulated-annealing.test.cpp
verify/verify-unit-test/sparse-table.test.cpp
verify/verify-unit-test/strassen.test.cpp
verify/verify-unit-test/string-search.test.cpp
verify/verify-unit-test/template.test.cpp
verify/verify-unit-test/tree-path.test.cpp
verify/verify-yosupo-ds/yosupo-associative-array-unerasable-hashmap.test.cpp
verify/verify-yosupo-ds/yosupo-dynamic-sequence-range-affine-range-sum-treap.test.cpp
verify/verify-yosupo-ds/yosupo-vertex-add-path-sum-euler-tour.test.cpp
verify/verify-yosupo-graph/yosupo-tree-hash.test.cpp
verify/verify-yosupo-math/yosupo-concave-min-plus-convolution-1.test.cpp
verify/verify-yosupo-math/yosupo-concave-min-plus-convolution-2.test.cpp
verify/verify-yosupo-math/yosupo-determinant-of-matrix-bbla.test.cpp
verify/verify-yosupo-math/yosupo-determinant-of-sparse-matrix-bbla.test.cpp
verify/verify-yosupo-math/yosupo-factorization.test.cpp
verify/verify-yosupo-math/yosupo-kth-root-mod.test.cpp
verify/verify-yosupo-math/yosupo-primitive-root.test.cpp
verify/verify-yosupo-math/yosupo-two-square-sum.test.cpp
verify/verify-yosupo-ntt/yosupo-multipoint-evaluation-chirp-z.test.cpp
verify/verify-yosupo-ntt/yosupo-multivariate-circular-convolution.test.cpp
verify/verify-yosupo-string/yosupo-number-of-subsequences.test.cpp
verify/verify-yuki/yuki-0002.test.cpp
verify/verify-yuki/yuki-0103.test.cpp
verify/verify-yuki/yuki-0952.test.cpp
verify/verify-yuki/yuki-1112-sparse.test.cpp
verify/verify-yuki/yuki-1112.test.cpp
verify/verify-yuki/yuki-1775.test.cpp
Code
#pragma once
#include <chrono>
using namespace std;
namespace nyaan_internal {
unsigned long long non_deterministic_seed() {
unsigned long long m =
chrono::duration_cast<chrono::nanoseconds>(
chrono::high_resolution_clock::now().time_since_epoch())
.count();
m ^= 9845834732710364265uLL;
m ^= m << 24, m ^= m >> 31, m ^= m << 35;
return m;
}
unsigned long long deterministic_seed() { return 88172645463325252UL; }
// 64 bit の seed 値を生成 (手元では seed 固定)
// 連続で呼び出すと同じ値が何度も返ってくるので注意
// #define RANDOMIZED_SEED するとシードがランダムになる
unsigned long long seed() {
#if defined(NyaanLocal) && !defined(RANDOMIZED_SEED)
return deterministic_seed();
#else
return non_deterministic_seed();
#endif
}
} // namespace nyaan_internal#line 2 "internal/internal-seed.hpp"
#include <chrono>
using namespace std;
namespace nyaan_internal {
unsigned long long non_deterministic_seed() {
unsigned long long m =
chrono::duration_cast<chrono::nanoseconds>(
chrono::high_resolution_clock::now().time_since_epoch())
.count();
m ^= 9845834732710364265uLL;
m ^= m << 24, m ^= m >> 31, m ^= m << 35;
return m;
}
unsigned long long deterministic_seed() { return 88172645463325252UL; }
// 64 bit の seed 値を生成 (手元では seed 固定)
// 連続で呼び出すと同じ値が何度も返ってくるので注意
// #define RANDOMIZED_SEED するとシードがランダムになる
unsigned long long seed() {
#if defined(NyaanLocal) && !defined(RANDOMIZED_SEED)
return deterministic_seed();
#else
return non_deterministic_seed();
#endif
}
} // namespace nyaan_internal