Tips

【Unity】練習問題 8

【Unity】練習問題 8

Unity練習問題 8


UnityのエディターやC#スクリプトのオリジナル練習問題を出題していきます。
第8問も、前回と同じく乱数に関する問題です。
※使用しているUnityのバージョンは5.5.2f1です。

問題


Consoleに下図のログが出力された。

ヒエラルキーに配置したゲームオブジェクトには、下記のスクリプトのみ1つだけアタッチしてある。
Startメソッド終了時に、変数a, b, c, dに代入されている値として正しい組合せを1つ、選択肢から選びなさい。
※なお、シーン内で他のスクリプトは動作していないものとする。

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
using UnityEngine;
 
public class Practice_08 : MonoBehaviour {
 
    int a, b, c, d;
 
    void Start() {
        Random.State state1 = Random.state;
        Debug.Log(Random.Range(1, 100));
        Debug.Log(Random.Range(1, 100));
        Debug.Log(Random.Range(1, 100));
        Debug.Log(Random.Range(1, 100));
 
        Random.State state2 = Random.state;
        Debug.Log(Random.Range(1, 100));
        Debug.Log(Random.Range(1, 100));
 
        Random.state = state1;
        a = Random.Range(1, 100);
        b = Random.Range(1, 100);
 
        Random.state = state2;
        c = Random.Range(1, 100);
        d = Random.Range(1, 100);
    }
}
  1. 「a = 53, b = 74, c = 77, d = 5」
  2. 「a = 53, b = 74, c = 13, d = 87」
  3. 「a = 77, b = 5,   c = 13, d = 87」
  4. 「a = 13, b = 87, c = 77, d = 5」
  5. 「a = 13, b = 87, c = 53, d = 74」

解答


解答を見る

2

解説


解説を見る

Random.stateは、ランダムクラスの乱数生成状態(ステータス)のプロパティで、戻り値はRandom.State型です。
Randomクラスには、Stateという構造体が定義されており、その値をこのプロパティで取得・変更ができます。
乱数の生成前にstateの値をgetしておけば、必要なタイミングでRandom.stateプロパティにsetすることで、同じ生成パターンで乱数を作ることができます。

本題では、Random.State型の変数「state1」に、乱数生成前のステートを取得した後、Randomクラスを利用しています。
4回利用後、再度「state2」の変数にステートを取得した後、再びRandomクラスを2回利用しました。

state1をセットすると、Random.Range(1, 100)をコールすれば、4回目までの値は必ず「53、74、77、5」となります。
state2をセットすると、Random.Range(1, 100)をコールすれば、2回目までの値は必ず「13、87」となります。

state1セットしてRandomクラスを2回、state2セットしてRandomクラスを2回、乱数を生成しているため、正解は2番となります。

使用上の注意
Random.stateで取得できる状態は、シーン再生ごとに異なります。
シーン1回再生中に同じ条件で乱数を発生させる場合に使用しましょう。
毎回同じ乱数にしたければRandom.InitStateを使用しましょう。

<<  < 次の問題  前の問題 > >>

[Unity_317×90]

ゲーム制作関連のオススメ連載リンク

とっても手軽なゲーム制作体験!
Unityゲーム開発基礎

実際のリリースゲームを題材にしたハンズオンゲーム制作連載
実践unityゲーム開発

Recent News

Recent Tips

Tag Search