乱数のシードを設定した後に、
シードを設定する前の状態 (乱数を固定しない)
に戻す方法はありますか?
UnityEngine.Random.InitState(10);
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答2件
0
ベストアンサー
シードを再設定する前にRandom.stateを保存しておくというのはどうでしょうかね?
下記のようなコードを試してみましたら...
C#
1using UnityEngine; 2 3public class RandomSeedTest : MonoBehaviour 4{ 5 private void Start() 6 { 7 // ランダムな整数を5個表示 8 for (var i = 0; i < 5; i++) 9 { 10 Debug.Log(Random.Range(0, 100)); 11 } 12 13 // ステートを覚えておく 14 var state = Random.state; 15 16 // シードを変更 17 Random.InitState(123); 18 Debug.Log("Init state"); 19 20 // ランダムな整数を5個表示 21 for (var i = 0; i < 5; i++) 22 { 23 Debug.Log(Random.Range(0, 100)); 24 } 25 26 // ステートを記憶した時点の状態に戻す 27 Random.state = state; 28 Debug.Log("Revert state"); 29 30 // ランダムな整数を5個表示 31 for (var i = 0; i < 5; i++) 32 { 33 Debug.Log(Random.Range(0, 100)); 34 } 35 36 // シードを変更 37 Random.InitState(456); 38 Debug.Log("Init state"); 39 40 // ランダムな整数を5個表示 41 for (var i = 0; i < 5; i++) 42 { 43 Debug.Log(Random.Range(0, 100)); 44 } 45 46 // ステートを記憶した時点の状態に戻す 47 Random.state = state; 48 Debug.Log("Revert state"); 49 50 // ランダムな整数を5個表示 51 for (var i = 0; i < 5; i++) 52 { 53 Debug.Log(Random.Range(0, 100)); 54 } 55 } 56}
Random.state
を戻すと乱数列はそのステートからの続きとなり、下図のように「Revert state」の後には同じ数列が出てきました。
投稿2020/01/21 13:47
総合スコア10816
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/22 02:40