gpt4 book ai didi

Delphi(2006) 循环帮助

转载 作者:行者123 更新时间:2023-12-03 18:56:19 25 4
gpt4 key购买 nike

所以我基本上想要做的是让某件事在 70% 的时间发生,另外一些事情在每件事的 10% 的时间发生,如果这是有道理的,但我的应用程序似乎没有执行我猜测的任何操作我误解了循环语法或其他东西,无论如何,如果有人可以看一下,也许会给我一些建议

per1 := 70;
per2 := 77;
per3 := 84;
per4 := 91;
per5 := 100;
per6 := Random(2) + 1;
randomize;
RandPer:= Random(100);
randomize;
RandPer2 := Random(100);

if RandPer2 <= 70 then begin
If RandPer <= per1 then begin
Functiontest(1);
end Else If RandPer <= per2 then begin
Functiontest(3);
end Else begin If RandPer <= per3 then begin
Functiontest(5);
end Else begin If RandPer <= per4 then begin
Functiontest(6);
end Else begin If RandPer <= per5 then begin
Functiontest(9);
end;
end;
end;
end;

最佳答案

您没有任何循环语法,因此这肯定是您混淆的可能来源。

不要调用Randomize多次。每次您这样做时,它都会重新初始化随机种子,这是基于系统时钟的。如果您的代码运行速度快于时钟提前,那么您对 ​​Randomize 的多次调用实际上会将随机种子重置为之前的相同值,从而导致重复 Random调用返回相同的值。

帮助建议您调用Randomize仅在程序开始时进行一次。如果你正在编写一个单元或组件并且你不负责整个程序,那么不要调用Randomize。一点也不。相反,记录您的代码的使用者应该自己调用它。

如果您正在编写 DLL 而不是使用运行时包,则调用 Randomize在您的 DLL 导出的初始化函数中;您的 DLL 的使用者将无法访问您的 DLL 的 Delphi 运行时库副本。

此外,如果您希望某件事在 70% 的时间内发生,那么您应该检查您的值是否严格小于 70。Random 的可能返回值包括零; 70% 的结果将介于 0 和 69 之间。允许 70 实际上会使事件在 71% 的时间内发生。

最后,你10%的时间计算对我来说没有意义。你有 7% 的时间会发生三件事,还有 9% 的时间会发生一件事。当你只剩下 30% 的时间时,你不可能有四个事件,每个事件都有 10% 的时间发生。您的意思是每个事件的频率都独立于其他事件进行测量吗?如果是这样,那么不要将所有条件测试与 else 链接在一起。 ;完全使用单独的 if每个人的声明。

关于Delphi(2006) 循环帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/368762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com