获取随机数据并且不重复

场景介绍

1. MySQL 中有 500 条视频数据

2. 用户每次请求随机获取视频列表

  • 每次从 MySQL 中获取 20 条数据
  • 每次获得的数据不能重复

3. 用户数量、视频数量会不断增加

  • 用户数量数量上限 1,000 万
  • 视频数量数量上限 9,000 万

方案一 Redis 集合求差集

SDIFFSTORE

优点

  • 每条数据都是随机产生

缺点

  • 内存消耗巨大

方案二 随机一个页数,每次请求页数递增

优点

  • 内存消耗低

缺点

  • 只是分页数随机
  • 没有做到所有数据都随机

方案三 一直随机页数,过滤掉已访问的页数

  • 作者:码报国
  1. 将20个页数随机存入一个栈
  2. 请求的时候从栈中弹出一个
  3. 当栈为空时,遍历完所有的数据
Unity中的随机重复通常是指在编程中生成一系列随机且不重复数据集合。这在游戏开发中经常需要,比如随机选择不同的敌人、道具或者关卡等。在Unity中实现随机重复的一个常见方法是使用列表(List)或数组(Array)来存储数据,然后通过随机选择和移除元素的方式来确保元素的唯一性。 以下是实现随机重复的一个简单步骤: 1. 创建一个列表并初始化包含所有可能的元素。 2. 使用随机函数来随机选择列表中的一个元素。 3. 从列表中移除这个元素,确保它不会被再次选择。 4. 重复步骤2和3直到列表为空。 Unity中可以使用`System.Random`类来生成随机数,或者使用`Random.Range`等内置函数来辅助生成随机数。 示例代码(假设我们随机选择一个不重复的数字): ```csharp using System; using System.Collections.Generic; public class RandomUniqueSelector { private List<int> pool; private Random random; public RandomUniqueSelector(int min, int max) { pool = new List<int>(); random = new Random(); for (int i = min; i <= max; i++) { pool.Add(i); } } public int GetRandomUnique() { if (pool.Count == 0) return -1; // 没有元素可选时返回-1或其他错误码 int index = random.Next(pool.Count); int value = pool[index]; pool.RemoveAt(index); return value; } } ``` 使用该类时,只需要创建一个`RandomUniqueSelector`实例,并不断地调用`GetRandomUnique`方法来获取随机且不重复的数字。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值