我最近一直在尝试编写程序(基于文本的游戏),但我只知道一些命令并且不能很好地理解每个命令。
我想做的是一次机会。让我们说我希望程序有
我看到同样的问题Here但是我不理解这些命令,因为我从未使用过它们(我说的是 set.seed 和 sample < /强>)。有人可以向我解释它们是如何工作的吗?还有其他方式(更容易理解吗?我不介意它是否消耗更多资源)
答案 0 :(得分:1)
program Project1;
{$ASSERTIONS ON}
function getProb(aProbability: Integer): boolean;
begin
result := aProbability > (100 - random(100));
end;
procedure miss;
begin
writeln('miss');
end;
procedure hit;
begin
writeln('hit');
end;
var
i, success, probability, errorMarge: Integer;
const
combat: array[boolean] of procedure = (@miss, @hit);
begin
// show that getProb() is reliable
errorMarge := 4;
success := 0;
probability := 80;
for i in [0..99] do
Inc(success, Byte(getProb(probability)));
assert(success >= probability - errorMarge);
success := 0;
probability := 50;
for i in [0..99] do
Inc(success, Byte(getProb(probability)));
assert(success >= probability - errorMarge);
// example usage
combat[getProb(20)];
combat[getProb(80)];
combat[getProb(90)];
readln;
end.
答案 1 :(得分:0)
不知道你知道什么“命令”,这很难回答而不进行概括。
如果您只需要在两个值之间进行选择,则在您知道如何的范围内生成随机值,并根据您的概率计算分界线。因此,对于您的示例,如果您可以生成0到1之间的值,如果它是&lt; = 0.9,则点击。
通过添加连续概率,可以将其扩展为多个值。因此,如果您有4个值可供选择,每个值的概率为25%,则获得0到1之间的随机值:如果小于0.25,则选择0否则小于0.5,如果小于0.75,则选择1否则选择2否则选择3。