我正在尝试使用c4droid IDE为随机生成的Android终端编写一个简单的ASCII风格游戏。它具有C ++支持,基本上我使用规则生成array[width][height]
个切片rand()%2 - 1
创建可步行的切片,0
是墙。但是有问题。每次我'随机'生成地图时它看起来都一样 - 因为rand()
并不是真正随机的。
我听说过使用HDD或其他部件创建的熵。问题是我在android上使用它因此对我来说很难实现,因为C ++没有像Java一样使用,所以我在谷歌上找不到解决方案。
如此简短的问题:如何在android上使用c ++生成“非常真实”的随机数?
答案 0 :(得分: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
}
答案 1 :(得分: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;
}