gpt4 book ai didi

ios - 随机 float 的数学方程式?

转载 作者:行者123 更新时间:2023-11-29 11:18:47 25 4
gpt4 key购买 nike

我有这个方法:

- (float)randomFloatBetween:(float)num1 andLargerFloat:(float)num2 {
return ((float)arc4random() / ARC4RANDOM_MAX) * num2-num1 + num1;
}

我很好奇,如果可以而不是对以下条件使用条件:我想像这样为我的游戏制作一个随机 float :

When the score is:
Score 0-20: I want a float between 4.0-4.5 using the above method
Score 21-40: I want a float between 3.0-3.5 using the above method
Score 41-60: I want a float between 2.5-3.0 using the above method
Score 61+: I want a float between 2.0-2.5 using the above method

现在我知道我可以使用条件来做到这一点,但是有没有比这样做更容易的数学方程式呢?

谢谢!

编辑1:

    - (float)determineFloat {
if (score <= 60)
{
//Gets the tens place digit, asserting >= 0.
int f = fmax(floor( (score - 1) / 10 ), 0);

switch (f)
{
case 0:
case 1:
{
// return float between 4.0 and 4.5
[self randomFloatBetween:4.0 andLargerFloat:4.5];
}
case 2:
case 3:
{
// return float between 3.0 and 3.5
[self randomFloatBetween:3 andLargerFloat:3.5];
}
case 4:
case 5:
{
// return float between 2.5 and 3.0
[self randomFloatBetween:2.5 andLargerFloat:3];
}
default:
{
return 0;
}
}
}
else
{
// return float between 2.0 and 2.5
[self randomFloatBetween:2.0 andLargerFloat:2.5];
}
return;
}

这个怎么样?另外,您确定这是最有效的方法吗?

最佳答案

可能不是,因为关系不是连续的。当你有这种需求时,最好只使用条件语句或 switch 语句。你和任何阅读或调试代码的人都会知道这个函数在做什么。在这种情况下,使用某种极其复杂的数学函数充其量很可能会减慢过程。

使用开关的可能性:

-(float)determineFloat:(float)score
{
if (score <= 60)
{
//Gets the tens place digit, asserting >= 0.
int f = (int)fmax(floor( (score - 1) / 10.0f ), 0);

switch (f)
{
case 0:
case 1:
{
return [self randomFloatBetween:4.0 andLargerFloat:4.5];
}
case 2:
case 3:
{
return [self randomFloatBetween:3.0 andLargerFloat:3.5];
}
case 4:
case 5:
{
return [self randomFloatBetween:2.5 andLargerFloat:3.0];
}
default:
{
return 0;
}
}
}
else
{
return [self randomFloatBetween:2.0 andLargerFloat:2.5];
}
}

用法:

float myScore = 33;
float randomFloat = [self determineFloat:myScore];

现在,randomFloat 将是 3 到 3.5 之间的一个值。

关于ios - 随机 float 的数学方程式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8219626/

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