-
システム時刻を使用したシード状態の生成:
use std::time::{SystemTime, UNIX_EPOCH}; use rand::SeedableRng; use rand::rngs::StdRng; let seed = SystemTime::now() .duration_since(UNIX_EPOCH) .expect("Time went backwards") .as_nanos(); let mut rng = StdRng::seed_from_u64(seed);
上記の例では、現在のシステム時刻からシード状態を生成しています。この方法では、プログラムを実行するたびに異なるシード状態が生成されます。
-
固定のシード値を使用したシード状態の生成:
use rand::SeedableRng; use rand::rngs::StdRng; let seed: [u8; 32] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32]; let mut rng = StdRng::from_seed(seed);
上記の例では、固定のシード値を使用してシード状態を生成しています。この方法では、同じシード値を使用すると常に同じシード状態が生成されます。
-
ランダムなバイト列を使用したシード状態の生成:
use rand::SeedableRng; use rand::rngs::StdRng; use rand::RngCore; let mut seed: [u8; 32] = [0; 32]; rand::thread_rng().fill_bytes(&mut seed); let mut rng = StdRng::from_seed(seed);
上記の例では、ランダムなバイト列を生成し、それをシード状態として使用しています。これにより、高品質のシード状態を生成することができます。
これらはいくつかのシード状態の生成方法の例です。Rustの乱数生成ライブラリであるrand
を使用することで、さまざまなランダム性の要件に対応することができます。詳細な情報は、公式ドキュメントやrand
クレートのドキュメントを参照してください。