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

Kusto中生成刷新后不改变的固定随机值方法咨询

实现Kusto中固定不变的随机值生成

直接用rand()不行,因为它每次执行查询都会生成新的随机数。要得到固定不变的随机值,可以利用hash函数+固定种子的方式,基于每行的唯一标识(比如Id、Name)计算出稳定的哈希值,再映射到你需要的数值范围(比如0-100)。

方法一:基于整数哈希取模(适合生成整数或近似实数)

这种方法简单直接,用固定种子对唯一标识做哈希,取绝对值后模100得到0-100之间的值:

let DataSource = datatable(Id:string, Name:string, Value:real)
[
    '1', 'Name1', 36.27,
    '2', 'Name2', 10.85,
    '3', 'Name3', 722.49,
    '4', 'Name4', 216.1,
    '5', 'Name5', 345.44,
    '6', 'Name6', 100.83
];
DataSource
| extend y = abs(hash(Id, 123)) % 100.0  // 123是自定义的固定种子,可换成任意整数

方法二:归一化到精确实数范围

如果需要更均匀的实数分布,可以把哈希值归一化到0-100的区间:

let DataSource = datatable(Id:string, Name:string, Value:real)
[
    '1', 'Name1', 36.27,
    '2', 'Name2', 10.85,
    '3', 'Name3', 722.49,
    '4', 'Name4', 216.1,
    '5', 'Name5', 345.44,
    '6', 'Name6', 100.83
];
let fixed_seed = 456;  // 固定种子,保持不变即可
let target_max = 100.0;  // 目标最大值
DataSource
| extend hash_result = hash(Name, fixed_seed)
| extend y = (abs(hash_result) / toreal(pow(2, 31))) * target_max  // 映射到0~target_max的实数
| project-away hash_result  // 移除中间计算列

关键说明

  • 固定种子:只要种子值不变,同一输入(比如Id='1')的哈希结果永远一致,生成的y值就不会变。
  • 唯一标识:必须用每行唯一的字段(Id、Name都可以)作为哈希输入,确保每行的y值不同。
  • 范围调整:把代码里的100.0换成你需要的最大值,就能生成对应范围的固定随机值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 18:45:11