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

Python实现基于字符串Token长度的加权随机整数生成

基于Token数量的加权随机整数生成方案

核心逻辑

要生成0-7之间的整数,需让4和5的概率最高,其余数值的概率向两端(0、7方向)依次递减,且整体权重分布要和当前字符串的Token数量(len(tokens))与最大Token数(max_len_token=64)的比例挂钩:Token数量越接近最大值,4和5的概率优势越明显,其余数值的概率越低。

权重设计思路

  1. 先构建基础对称权重模板:以4、5为峰值,向两侧对称降低,比如初始基准权重为[0.05, 0.1, 0.15, 0.2, 0.25, 0.2, 0.15, 0.05](对应0-7),确保4和5的权重天然最高。
  2. 计算Token占比:ratio = len(tokens) / max_len_token,取值范围0到1。
  3. 动态调整权重:根据ratio放大4和5的权重,ratio越大,放大倍数越高;同时按比例压缩其余数值的权重,最后归一化所有权重,保证总和为1。

代码实现

import random

def weighted_random_int(tokens_len, max_len_token=64):
    # 基础权重模板:对应0-7的初始概率分布,4和5权重最高
    base_weights = [0.05, 0.1, 0.15, 0.2, 0.25, 0.2, 0.15, 0.05]
    # 计算当前Token数占最大Token数的比例
    ratio = tokens_len / max_len_token
    # 峰值权重放大倍数:ratio越大,4和5的权重提升越明显
    peak_multiplier = 1 + ratio * 2  # 倍数范围1-3,可按需调整
    adjusted_weights = base_weights.copy()
    adjusted_weights[4] *= peak_multiplier
    adjusted_weights[5] *= peak_multiplier
    
    # 归一化权重,确保权重总和为1
    total_weight = sum(adjusted_weights)
    normalized_weights = [w / total_weight for w in adjusted_weights]
    
    # 生成目标随机整数
    return random.choices([0,1,2,3,4,5,6,7], weights=normalized_weights, k=1)[0]

# 示例:当Token数为46时的调用
print(weighted_random_int(46))

效果说明

  • 当tokens_len=46时,ratio≈0.71875,peak_multiplier≈2.4375,调整后4和5的权重会显著高于其他数值,其余数值的概率按比例降低。
  • 若Token数接近64(ratio接近1),4和5的概率会进一步提升,几乎成为主要输出;若Token数很少(ratio接近0),权重会接近基础模板,4和5仍保持最高概率但优势减弱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 18:43:24