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

如何实现按指定百分比概率返回对应结果的自定义roll函数

按指定百分比概率返回结果的实现方案

原代码问题分析

原有实现存在两个核心逻辑错误:

  • 概率判断逻辑和输入参数无关:Random(Percent) 会生成 0 到 Percent-1 之间的整数,固定判断数值是否等于 25 的逻辑完全不关联传入的百分比参数,自然无法实现按指定概率返回结果的需求
  • 缺少随机种子初始化:Delphi 自带的随机函数如果不提前初始化种子,每次程序运行生成的随机序列是固定的,会导致概率结果完全失真

正确实现代码

// 注意:程序启动时全局调用1次Randomize初始化随机种子即可,不要放在本函数内重复调用
Function roll(Percent: Integer): string;
var
  randVal: Integer;
Begin 
  randVal := Random(100); // 生成0~99的整数,共100个结果,每个数值对应1%的出现概率
  If randVal < Percent then
    result := 'win'
  else 
    result := 'lose';
End;

效果说明

  • 调用roll(60)时,随机值落在0~59区间的概率刚好为60%,符合需求
  • 边界值自动兼容:传入0时100%返回lose,传入100时100%返回win,符合常规使用预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 09:57:04