# TapBattleClient.RandomInt

# 功能描述

生成确定性随机整数。所有客户端使用相同种子按相同顺序调用,会得到相同的随机数序列。常用于需要多客户端随机结果一致的场景,例如开宝箱、抽卡等。

前提: 必须先调用 NewRandomNumberGenerator 创建随机数管理器(使用OnFrameSyncStart事件中的seed)。

# 方法签名

public static int RandomInt()

# 返回值

返回一个随机整数(int类型)。

# 使用说明

# 典型使用场景

  • 开宝箱 - 保证所有玩家看到相同的掉落结果
  • 抽卡 - 保证所有玩家抽到相同的卡牌
  • 随机事件 - 保证所有玩家触发相同的随机事件
  • 随机生成 - 保证所有玩家生成相同的地图/敌人

# 注意事项

  • 必须先创建 - 调用前必须先调用NewRandomNumberGenerator创建随机数管理器
  • 使用服务器种子 - 必须使用OnFrameSyncStart事件中返回的seed
  • 按顺序调用 - 所有客户端必须按相同顺序调用,才能保证结果一致
  • 不要混用 - 游戏逻辑中不要同时使用Unity的Random和SDK的RandomInt
  • 范围转换 - 返回值需要自行转换到需要的范围

# 代码示例

# 示例1:生成指定范围的随机数

using UnityEngine;

public class RandomHelper : MonoBehaviour
{
    // 生成0-max之间的随机数
    public int RandomRange(int max)
    {
        return TapBattleClient.RandomInt() % max;
    }

    // 生成min-max之间的随机数
    public int RandomRange(int min, int max)
    {
        int range = max - min;
        return min + (TapBattleClient.RandomInt() % range);
    }

    // 生成随机浮点数(0.0-1.0)
    public float RandomFloat()
    {
        return (TapBattleClient.RandomInt() % 10000) / 10000f;
    }
}

# 最佳实践

  1. 统一调用顺序 - 确保所有客户端在相同的游戏逻辑点调用RandomInt
  2. 封装辅助方法 - 封装常用的随机数范围转换方法
  3. 避免条件调用 - 不要在if语句等条件分支中调用,会导致调用顺序不一致

# 相关API