3

我正在尝试使用 c4droid IDE 为 Android 终端编写一个带有随机生成世界的简单 ASCII 风格游戏。它具有 C++ 支持,基本上我正在array[width][height]使用规则rand()%2 - 1生成瓷砖,创建可行走的瓷砖,0是墙壁。但是有问题。每次我“随机”生成地图时,它看起来都是一样的——因为rand()并不是真正随机的。我听说过使用 HDD 或其他部件创建的熵。问题是我在 android 上使用它,所以我实现起来很奇怪,因为 C++ 不像 Java 那样被使用,所以我在谷歌上找不到解决方案。这么短的问题:如何在 android 上使用 c++ 生成“非常真实”的随机数?

4

2 回答 2

10

您需要使用srand(time(NULL)). 这允许计算机使用系统时间来计算伪随机数。

参考链接:http ://www.cplusplus.com/reference/clibrary/cstdlib/srand/

编辑:注意您只需要为 rand() 函数播种一次可能是明智的,通常是在程序的开头。

int main()
{
 srand(time(NULL)) //only needed to be called ONCE
 //code and rand functions afterward
}
于 2012-11-09T18:24:52.903 回答
3

我认为 rand() 应该适用于您正在做的事情。你在播种随机数生成器吗?

srand(time(NULL));
// Should be a different set of numbers each time you run.   
for(unsigned i = 0; i < 10; ++i) {
    cout << rand() % 2 - 1;    
}
于 2012-11-09T18:26:06.813 回答