概率和随机数
Probability and random numbers
我刚刚开始C++,正在创建一个简单的基于文本的冒险。我试图弄清楚如何拥有基于概率的事件。例如,当你打开盒子时,有50%的几率会有一把剑,有50%的几率是一把刀。我知道如何制作随机数生成器,但我不知道如何将该数字与某些东西相关联。我创建了我想要的变体,但它需要用户输入随机数。我想知道如何根据随机数是否大于或小于 50,而不是用户输入的数字是否大于或小于 50 来基于 if 语句。
将其余运算符 % 与 rand 一起使用。rand((%2 可以给你 0 或 1。让 0 是一把剑,1 是一把刀。
如果你还需要一把斧头,那么使用 rand((%3。它可以给你 0,1 或 2。
2 代表一把斧头,0 和 1 如上。ifs和其他是显而易见的。
rand((%n 其中 n 是大数,给出较小数字的概率更高。概率分布不均。您可以从 stl 或 boost 中查看一些随机数生成器。
如果使用rand()
它会生成0..RAND_MAX
范围内的数字。因此,对于 50% 的概率,您可以执行以下操作:
#include <stdlib.h>
if (rand() < RAND_MAX / 2)
{
// sword - 50% probability
}
else
{
// knife - 50% probability
}
显然,您可以将其扩展到两个以上的不同情况,每种情况具有任何给定的概率,只需在每个情况的0..RAND_MAX
范围内定义适当的阈值,例如
int r = rand();
if (r < RAND_MAX / 4)
{
// sword - 25% probability
}
else if (r < 3 * RAND_MAX / 4)
{
// knife - 50% probability
}
else
{
// axe - 25% probability
}
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 整数不会重复超过随机数
- 如何根据单词在文本中出现的概率输出单词
- if数组上的随机数
- 在将数字随机生成为数组期间从内存输出随机数的数组
- 半随机数生成C++
- 程序在尝试猜测它选择的随机数时进入无限循环?
- 有没有办法在 c++ 中同时生成随机数?如果没有,是否有解决方法?
- 具有随机数的二维数组不会更改
- 随机数未达到限制
- 我想生成许多矩阵并用随机数填充它
- <random>在实践中应该实际使用哪个随机数引擎? std::mt19937?
- 制作具有平均值的随机数生成器
- 生成具有给定概率的随机数(C++)
- 概率和随机数
- 具有不同概率的随机数
- 生成一个小于4位的随机数,但其具有1、2或3位数字的概率相等
- 在C++中,如何基于双值概率生成随机数
- 产生具有一定概率的随机数
- 根据这些概率,这会给我合适的随机数吗?C++