簡體   English   中英

如何使 Random.Range() 統一更隨機?

[英]How to make Random.Range() in unity more random?

int runMade=Random.Range(1,7)

Random.Range() 在 unity 中多次生成相同的數字。 我還注意到它多次生成像 1 或 2 這樣的小數字。 我現在正在制作板球比賽,所以我需要更多的隨機生成。 有沒有辦法讓生成更隨機?

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GenerateRandom : MonoBehaviour
{
    private List<int> lastNumbers;
    void Start()
    {
        lastNumbers = new List<int>();
        //Use a seed to get the same numbers every time.
        //https://docs.unity3d.com/ScriptReference/Random-state.html
        //Random.InitState(932903292);

        for (int i = 0; i < 10; i++)
        {
            Debug.Log("Random number: " + GenerateRandomNumber());
        }
    }

    public int GenerateRandomNumber()
    {
        //The highest number you want here. The lower number is inclusive, higher one exclusive.
        int rand = Random.Range(0, 10);

        //Regenerate while the lastNumbers contains random.
        while (lastNumbers.Contains(rand))
        {
            rand = Random.Range(0, 10);
        }

        //Store it.
        AddNumberToList(rand);

        //Give back the number we generated.
        return rand;
    }

    void AddNumberToList(int number)
    {
        if (lastNumbers.Count > 3)
        {
            lastNumbers.RemoveAt(lastNumbers.Count - 1);
        }
        lastNumbers.Insert(0, number);
        Debug.Log("Last numbers: ");
        for (int i = 0; i < lastNumbers.Count; i++)
        {
            Debug.Log($"Index ({i}): {lastNumbers[i]}");
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM