android - 在 cocos2d-x 中使用 arc4random_uniform

标签 android ios random cocos2d-x arc4random

自 iOS 以来,我很高兴使用 arc4random_uniform,也很高兴使用 cocos2d-x 的 iOS 目标。

事实证明它不适用于 Android。错误:

error: 'arc4random_uniform' was not declared in this scope

我该如何解决这个问题?

最坏的情况是,在编译时我会检查 arc4random_uniform() 是否存在,如果不存在,则使用其他方法(如旧的 arc4random()...)。 我真的很想避免在这里为不同的目标使用不同的代码库。

还有什么建议吗?

注意:由于 cocos2d-x 是“一个代码”→“多个平台”,因此将此问题委托(delegate)给 Android 的 Java 代码会适得其反。

最佳答案

您可以在 ios 中使用的某些 C++ 库在 Android 中不可用。 不幸的是,arc4ramndom 只是其中之一。

所以唯一的方法是使用 stdlib 的替代品,如 std::rand() 或者如果你想要更多的话,使用默认的随机引擎。 这是关于如何使用 std::default_random_engine 获取给定时间间隔内的随机值的示例。

int randomValue(int from, int to) {

    std::random_device rd;
    std::default_random_engine e1(rd());
    std::uniform_int_distribution<int> uniform_dist(from, to);
    int mean = uniform_dist(e1);

    return mean;
}

关于android - 在 cocos2d-x 中使用 arc4random_uniform,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31449842/

相关文章:

android - 带有 ListView : two dividers between list item and button 的 AlertDialog

Android - AsyncTask 类和 Execute 方法

iphone - Opencv cvvideocamera 输出捕获 session

ios - 使用 UIPageControl 减小点大小或填充以适应屏幕上的所有页面指示器

java - 在方法中生成随机数

SwiftUI 查看结构而无需重新加载

c++ - Qt/C++中多线程的随机函数调用

android - 如何在openstreetmap android中制作触摸事件

android - Gradle - 意外的顶级异常 - 无处不在

ios - Kinvey 3.3.5 SDK 按 ID 查询