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

Node.js Random Generator按指定权重随机生成不同种族艺术图层问题咨询

随机权重种族生成逻辑调整方案

1. 基础配置调整

首先定义带权重的种族配置项,替换你原有的纯种族列表配置:

// 示例配置,可根据实际需求扩展种族、调整权重、绑定对应种族的图层
const RACE_CONFIG = [
  {
    name: "种族1",
    weight: 70, // 权重占比,数值越大选中概率越高
    layerSet: [/* 该种族对应的所有图层配置,和你原来的单种族图层配置逻辑一致 */]
  },
  {
    name: "种族2",
    weight: 30,
    layerSet: [/* 种族2对应的图层配置 */]
  }
]
const TOTAL_SUPPLY = 1000 // 你要生成的作品总数量

2. 实现权重随机选择种族工具函数

const getRandomRace = () => {
  // 计算总权重
  const totalWeight = RACE_CONFIG.reduce((sum, race) => sum + race.weight, 0)
  // 生成0到总权重之间的随机数
  const random = Math.random() * totalWeight
  let currentWeight = 0
  // 遍历匹配命中的种族
  for (const race of RACE_CONFIG) {
    currentWeight += race.weight
    if (random < currentWeight) {
      return race
    }
  }
}

如果需要严格100%匹配预设权重占比(比如总产1000份必须正好700份种族1、300份种族2),可以用预生成种族池的方案替代上面的实时随机函数:

// 预生成按权重占比分配的种族池,再打乱顺序
const generateRacePool = () => {
  const pool = []
  RACE_CONFIG.forEach(race => {
    // 计算该种族实际生成数量,四舍五入或取整规则可自行调整
    const count = Math.round(TOTAL_SUPPLY * (race.weight / RACE_CONFIG.reduce((sum, r) => sum + r.weight, 0)))
    pool.push(...Array(count).fill(race))
  })
  // 打乱种族池顺序,实现随机切换种族生成
  return pool.sort(() => Math.random() - 0.5)
}
const racePool = generateRacePool()

3. 替换原有生成循环逻辑

删除你原来的「先遍历种族,再按种族生成固定数量」的嵌套循环,替换为以下逻辑:

// 用实时随机权重的方案走这个循环
const createAllNFTs = async () => {
  for (let i = 0; i < TOTAL_SUPPLY; i++) {
    // 每次生成前先随机选种族
    const currentRace = getRandomRace()
    // 沿用你原来的单种族生成逻辑,传入当前种族对应的图层配置currentRace.layerSet生成作品即可
    // 原有去重、元数据生成、图片导出逻辑无需修改
  }
}

// 用预生成种族池的精准占比方案走这个循环
const createAllNFTsByPool = async () => {
  for (let i = 0; i < racePool.length; i++) {
    const currentRace = racePool[i]
    // 同上,沿用原有生成逻辑,传入currentRace.layerSet即可
  }
}

注:原有图层拼接、去重校验、元数据输出、图片保存的逻辑无需调整,仅替换种族选择和循环逻辑即可实现需求。

内容的提问来源于stack exchange,提问作者Gian Franco De La Mendoza

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:15:03