程序在每次执行时生成相同的'random'编号
Program generates the same 'random' number with each execution
我正在尝试使用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;
}
相关文章:
- 如何在数组中找到最小编号的索引号?
- <random>在实践中应该实际使用哪个随机数引擎? std::mt19937?
- 贪婪算法编号列表
- 为什么在尝试测量函数返回所需的时间时,我的运行时编号是错误的?
- 为什么在为其分配编号后无法显示我的字符串值?
- 输出返回编号。等于输入字符串的单词的字符串数
- C++ gRPC 线程编号配置
- 是否可以为boost::random::uniform_int_distribution<>设置确定性种子?
- 'generate'不是窗口头文件中'std::random_device'的成员<random>
- 检查特定txt文件中的项目是否符合"名称编号USACO"中的约束
- 数组打印"random"值时出现问题
- 使用to_string、reverse、stoi组合的C++反转编号给出运行时错误实例超出范围
- 使用 llvm 和本地值编号算法擦除冗余表达式
- 使用""的不可重现的随机数<random>
- <random> 尽管不是常量,但所有发行版都是线程安全的吗?
- "1L << count"是什么意思?如何使用超出"unsigned long long int? "范围的语句编号打印?
- C++ 访问编号变量
- 测试 ISBN 编号以查看其是否有效
- 为什么通过带有文字编号的引用调用会出现"无匹配函数"错误?
- 程序在每次执行时生成相同的'random'编号