对不起,如果我的标题不够清楚。我举个例子。我们的函数是这样的:
C:
int main()
{
for(i=0;i<10;i++)
{
printf("%d",func(i));
}
}
int func(int b)
{
if(b>=0 && b<7)
return 70;
else
return 30;
}
当“b”为“rand() % 10”时,此函数 (b) 将以 70% 的可能性返回 70,以 30% 的可能性返回 30。但是,必须有一个更实用的方法。如果“那种方式”存在,我在 C(也可以是 C++)和 AS3 中都需要它。感谢您的回复。
我只是有时间登录并查看回复。你玩过 paradox interactive 的游戏吗?喜欢欧陆风云3?在那个游戏中有很多不同的随机化算法。例如,每个都有 1/3 的可能性,你可以得到好东西,什么都没有或坏东西。我想开发一个必须具有类似随机化算法的游戏。我想要一个函数获得阈值 0 和 1 之间的输入,并返回一个预定义的结果,或者我可以使用一个简单的 switch 语句来触发该结果的值
像这样的东西:
在 AS3 中:
Function randomize(poss:Number):function //here i may need to have more consequences than two. poss value can be an array instead of being a number.
{
Number a = Math.random()
If(a>poss)
Return func1;
Else
Return func2;
}
这里 func1 和 func2 是具有相同输入类型但任务不同的函数对象,我将使用返回的函数,如下所示:
Function onClick(evt:Event):void
{
var randFunction:Function=new Function();
randFunction = randomize(0.35);
randFunction();
}
但是,我不想像这个实例那样为我需要“加权可能性”的每个场合都硬编码。
PS:我不想让你为我编写代码,但对如何在 C 和 AS3 中解释加权可能性有一些很好的想法。如果你不打算贡献,那么就不要回复。