我想在不使用增强和“奇怪”的情况下做到这一点,我想随机填充一块板用于生命游戏。如何在C++中使用正态分布生成真值或假值
回答
只要使用stlib
的rand()
:
#include <stdlib.h>
#include <time.h>
bool randomBool() {
return rand() % 2 == 1;
}
int main()
{
/* initialize random seed: */
srand (time(NULL));
/* fill up your game board here */
}
要知道,它不会产生完全均匀的效果。为了达到这个目的,你可能必须自己实现一些东西。对于非加密目的,无论如何你可能没问题。
Boost并不奇怪,它被视为标准并不遥远。 (实际上,它是新标准中新库功能的中坚力量--C++ 11)。所以我不会排除它。
这样的一个系统外,您将不得不自己实现它更是一个数学底子的问题。
C++ 11,做它用下面的
#include <random>
#include <vector>
int main()
{
std::mt19937 gen;
std::bernoulli_distribution dist;
std::vector<bool> bv;
bv.reserve(100);
for(unsigned i=0; i!=100; ++i)
bv.push_back(dist(gen));
return 0;
}
此外,我实在不明白均匀和正态分布之间的区别是什么一个布尔值。
在这里查看C++随机数。 http://en.cppreference.com/w/cpp/numeric/random
我们不应该在创建后播种发电机吗? 'std :: mt19937生成器; 发电机。种子(时间(NULL)); std :: bernoulli_distribution distribution;对于(int i = 0; i <10; ++ i){ bool random = distribution(generator); std :: cout << random << std :: endl; }' – 2013-12-04 14:47:26
取决于用户是否确定性序列。如果他们不这样使用'std :: random_device'比'time(NULL)'干净得多' – 111111 2013-12-04 15:02:55
我想你会想用C++ 11的均匀分布。你需要#include <random>
。
std::default_random_engine defaultRandomEngine(std::random_device{}());
std::uniform_int_distribution<> uniformDistribution(0, 1);
for(int i = 0; i < 100; ++i)
{
std::cout << static_cast<bool>(uniformDistribution(defaultRandomEngine)) << std::endl;
}
为什么你不能只用'== 1'? – ailin 2017-11-30 11:38:08
- 1. 在C中生成正态分布随机值的算法?
- 2. 使用Box-Muller方法从正态分布生成值
- 3. 基于python中的一个值生成“正态分布”数据
- 4. JavaScript布尔真正变成假,假不变真
- 5. 如何在C中生成具有特定均值和标准差的正态分布的正整数?
- 6. 如何在Prolog中生成正态分布随机数?
- 7. 如何在PHP中生成累积正态分布
- 8. 如何在Java中生成正常的累积分布?它的逆cdf?对数正态值如何?
- 9. 如何写在布尔值的`for`环路(假,真)
- 10. 布尔,真,真,真如何假?
- 11. 如何在C/C++或Java中生成真正的低音吉他声音?
- 12. 如何构建真值表生成器?
- 13. 动态规划:真或假
- 14. 如何检查真或假的目标C布尔变量
- 15. 为Smarty变量分配真/假值
- 16. 阵列值,该值是真或假用于查找
- 17. 使用什么:布尔变量替代或空值真/假识别
- 18. 如何在AngularJS的模板中使用动态生成的值
- 19. 搜索页面 - 布尔值 - 如何搜索真/假/两者?
- 20. 如何使用AMPL中的正态分布生成一个随机数矩阵?
- 21. 如何检查bitArray是否包含任何真值或任何假值?
- 22. 如何在C中生成一个真正的随机数?
- 23. 复选框值真/假
- 24. Stringcomparison OrdinalIgnoreCase为真的假值
- 25. 标准正态分布z值函数在C#
- 26. 如果CIN真或变量C++假
- 27. numpy,如何生成一个正态分布的整数集合
- 28. 如何从正态分布生成数据
- 29. 序言:具有真值和假值
- 30. 证明论证真值表真/假
正态分布是连续的,所以它不产生真/假值。如果你在一些随机值之后,你可能只想使用rand并选择最后一位。不是最好的随机值,但我认为这足够好。 – Joel 2012-02-25 19:16:15
将您给定的正态分布分散以适应网格的单元格。 – 2012-02-25 19:17:37
正态分布适用于身高,体重(连续)等。您需要考虑Bernoulli_distribution(http://en.wikipedia.org/wiki/Bernoulli_distribution) – 2012-02-25 19:32:47