程序在每次执行时生成相同的“随机”数字

时间:2012-11-09 18:22:06

标签: android c++ random noise-generator

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

2 个答案:

答案 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;    
}