首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何按顺序生成-400、-200、-400

如何按顺序生成-400、-200、-400
EN

Stack Overflow用户
提问于 2015-01-10 06:31:30
回答 5查看 74关注 0票数 0

我正在尝试在第二个版本中编写一个for循环,它在原始代码中产生相同的结果,但我不确定如何按顺序获得-400,-200,-400。

原始代码:

代码语言:javascript
复制
p->m_p[0] = randFloat(-400.0f, 400.0);
p->m_p[1] = randFloat(-200.0f, 200.0);
p->m_p[2] = randFloat(-400.0f, 400.0);

第二个版本:

代码语言:javascript
复制
float x = -800;
float y = 800;

for(int i = 0; i < 4; i++)
{
plNew->m_fPosition[i] = randFloat(x / 2,y / 2); 
}
EN

回答 5

Stack Overflow用户

发布于 2015-01-10 06:49:36

如果你需要它在C中工作(或者在C++11之前的C++中),这是可行的:

代码语言:javascript
复制
#define NUMBER_OF_VALUES 3

float bounds[NUMBER_OF_VALUES] = { 400.0f, 200.0f, 400.0f };

for (int i = 0; i < NUMBER_OF_VALUES; i++)
{
  plNew->m_fPosition[i] = randFloat(-bounds[i], bounds[i]); 
}

只要用所需的常量初始化bounds[NUMBER_OF_VALUES]的所有成员,就可以将其扩展为NUMBER_OF_VALUES为4或更大的数字。它的一个很好的特性是,常量序列可以是您喜欢的任何东西,而不限于交替的400,200,400或任何其他规则序列。

票数 2
EN

Stack Overflow用户

发布于 2015-01-10 06:38:03

像这样的东西?

代码语言:javascript
复制
for (int i = 0; i < 4; i++) {
    float x, y;

    if (i % 2) {
        x = -400.0f;
        y = 400.0f;
    } else {
        x = -200.0f;
        y = 200.0f;
    }

    p->m_p[i] = randFloat(x, y);
}
票数 1
EN

Stack Overflow用户

发布于 2015-01-10 06:40:43

关于?

代码语言:javascript
复制
float x = -800;
float y = 800;

for(int i = 0; i < 4; i++)
{
    float z = 2.0 * ((float)((i + 1) % 2 + 1));
    plNew->m_fPosition[i] = randFloat(x / z, y / z); 
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27870326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档