You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查找并存储随机数的indexes?负数场景可行性咨询

查找随机数的索引并存储的实现方案

核心思路

这本质是**字典编码(Dictionary Encoding)**的应用:先提取原始数组的唯一值并排序,给每个值分配一个唯一索引,再用该索引替代原始值存储。

具体实现步骤(以Python为例)

  1. 提取原始数组的唯一值并排序,构建「值→索引」的映射表
  2. 遍历原始数组,将每个值替换为对应的索引

代码示例

针对你给出的示例数组 [300, 2, 43, 12, 0, 1, 90]:

# 原始数据
original_nums = [300, 2, 43, 12, 0, 1, 90]

# 步骤1:生成排序后的唯一值列表,建立值到索引的映射
sorted_unique = sorted(set(original_nums))
value_to_index = {val: idx for idx, val in enumerate(sorted_unique)}

# 步骤2:用索引替换原始值
encoded_indexes = [value_to_index[num] for num in original_nums]

print("原始数值:", original_nums)
print("对应索引:", encoded_indexes)

输出结果完全匹配你的示例:

原始数值: [300, 2, 43, 12, 0, 1, 90]
对应索引: [6, 2, 4, 3, 0, 1, 5]

关于用索引替代原始值存储

当然可以这么做,且有明显优势:

  • 若原始值是大整数、长字符串等占用空间大的数据,用小整数索引能大幅节省存储空间
  • 当数据存在大量重复值时,这种编码方式能显著降低存储冗余
  • 后续需要还原原始值时,只要保留排序后的唯一值列表,就能通过索引反向映射回原始值

关于负数的支持

完全支持负数。比如原始数组为 [-5, 3, -2, 3, 0],排序后的唯一值是 [-5, -2, 0, 3],对应的映射表为 {-5:0, -2:1, 0:2, 3:3},编码后的索引数组就是 [0, 3, 1, 3, 2],逻辑和正数完全一致。

内容的提问来源于stack exchange,提问作者Davit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 16:52:08