Unity C# 基础复习19——HashSet(P384)获取不重复随机数

Hashtable(哈希表)

由一对(key,value)类型的元素组成的集合

所有元素的key必须唯一

key→value是一对一的映射,即根据key就可以立刻在集合中找到所需元素

Hashtable方法

Add(key,value)

根据key而不是根据索引查找,因此速度很快

using UnityEngine;
using System.Threading;

public class Test : MonoBehaviour
{
    private void Start()
    {
        TestHashSet();
    }
    public static void TestHashSet()
    {
        HashSet<int> nums = new HashSet<int>();

        nums.Add(1);
        nums.Add(1);
        nums.Add(1);
        Debug.Log(nums.Count);
    }
}

按道理3次nums.Add(1),nums.Count应该为3,但是因为HashSet拒绝重复,因此为1.

我们可以借用这个特性来获取n个随机不重复数字

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

public class Test : MonoBehaviour
{
    private void Start()
    {
        TestHashSet();
    }
    public static void TestHashSet()
    {
        HashSet<int> nums = new HashSet<int>();
        System.Random r = new System.Random();
        while (nums.Count != 5)
        {
            nums.Add(r.Next(0, 5));

        }

        foreach (var item in nums)
        {
            Debug.Log("01组 = "+item);
        }
    }
}

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity中,生成不重复随机数可以通过以下步骤实现: 1. 创建一个整型数组,用于存储已生成的随机数。 2. 设定需要生成的随机数数量,例如设定为n个。 3. 使用循环,不断生成随机数,直到数组中存储的随机数数量等于n。 a. 在循环中生成一个随机数。 b. 使用另一个循环,遍历数组,检查生成的随机数是否已存在于数组中。 c. 如果随机数已存在,则返回到步骤a重新生成随机数。 d. 如果随机数不存在,则将其存储到数组中。 4. 当循环结束后,数组中存储的即为不重复随机数。 以下是一个示例代码: ```csharp using UnityEngine; public class NonRepeatingRandom : MonoBehaviour { public int numberOfRandomNumbers; public int[] nonRepeatingRandomNumbers; void Start() { nonRepeatingRandomNumbers = GenerateNonRepeatingRandomNumbers(numberOfRandomNumbers); } int[] GenerateNonRepeatingRandomNumbers(int count) { int[] nonRepeatingNumbers = new int[count]; int randomNumber; int currentIndex = 0; while (currentIndex < count) { randomNumber = Random.Range(1, 100); // 生成1到100之间的随机数,根据需求可修改范围 bool isDuplicate = false; for (int i = 0; i < currentIndex; i++) { if (randomNumber == nonRepeatingNumbers[i]) { isDuplicate = true; break; } } if (!isDuplicate) { nonRepeatingNumbers[currentIndex] = randomNumber; currentIndex++; } } return nonRepeatingNumbers; } } ``` 通过以上代码,我们可以在Unity中生成指定数量的不重复随机数,并存储在一个整型数组中。修改代码中的`numberOfRandomNumbers`变量,可以控制生成的随机数数量。根据需要,也可调整生成随机数的范围。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值