gpt4 book ai didi

c++ - 从对象数组中选择一个随机对象

转载 作者:行者123 更新时间:2023-11-28 00:43:52 25 4
gpt4 key购买 nike

我想实现一个函数,从对象数组中选择一个随机对象并将其返回给我。它应该是这样的(用 C++ 而不是伪代码):

getRandomObject(objectList) {
return objectList[int(random(length of objectList))];
}

我当前的代码看起来像这样,但似乎不起作用:

//definition of random selector
object getRandomObject(Object* objectList) {
return objectList[int(ofRandom(0, sizeof(objectList)))];
};

//create a pointer for the listOfObjects
object* listOfObjects;

//create an empty object to put the randomly selected object in
object randomObject;

//later in the code, populate the array:
object* listOfObjects[] = {
new Object(),
new Object(),
new Object()
};

//select random object
randomObject = getRandomObject(listOfObjects);

但这似乎返回了一个段错误。我注意到的一些问题:

sizeof() 返回getRandomObject 中指针的大小,而不是数组的大小。有没有一种获取数组大小的好方法?它可能涉及不对数组使用 float* 指针。这是 vector 的一个很好的用例吗?

我认为大部分问题在于我如何创建我的数组,而不是我如何从中选择随机对象。我对 C++ 比较陌生(来自 Java 背景),所以很多指针/引用/内存管理对我来说都是新的。

谢谢!

最佳答案

我看到了一个确定的问题和一个可能的问题。确定的问题是 sizeof(objectList) 返回 objectList 指针的大小,在大多数平台上为 4 或 8。它不返回数组 objectList 中元素的数量。传入数组的长度或使用 std::vectorstd::array

第二个可能的问题与ofRandom有关。确保 ofRandom(a,b) 返回数字 >= a,但严格 < b。如果它返回值 <= b,那么您将需要我们 ofRandom(0, objectVector.size() - 1)。通常,像这样的函数被编写为返回值严格 < b,但你应该检查一下。

关于c++ - 从对象数组中选择一个随机对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17386115/

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