程序在每次执行时生成相同的'random'编号

Program generates the same 'random' number with each execution

本文关键字:编号 random 执行 程序      更新时间:2023-10-16

我正在尝试使用C4Droid IDE编写一个随机生成的Android终端世界的ASCII样式游戏。它具有C 支持,基本上我使用规则rand()%2 - 1生成array[width][height]图块,创建可步行瓷砖,0是墙。但是有问题。每当我"随机"生成地图时,它看起来相同 - 因为rand()并不是真正随机的。我听说使用HDD或其他部件创建的熵。问题是我在Android上使用了它,因此实现它是很奇怪的,因为C 不像Java那样使用,因此我在Google上找不到解决方案。这么简短的问题:如何在Android上使用C 生成"几乎是真实的"随机数?

您需要用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
}

我认为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;    
}