有偏差的随机数生成
Biased random number generation
本文关键字:随机数 更新时间:2023-10-16
我想生成从-1到某个值k的随机整数。但我想以一种获得 -1 的概率高于 70% 的方式做到这一点。例如:- -1 2 -1 -1 6 -1 -1. 我这样做是为了针对蛮力方法测试我的代码。
这应该可以。如果您生成一个介于 0 和 100 之间的随机数,并且它小于概率(在本例中为 n(,则 getProb 返回 true,并且您的 -1。 否则,只需生成另一个随机数模 k
#include <stdlib.h>
#include <time.h>
#include <iostream>
#include <vector>
using namespace std;
bool getProb(int n) {
return (rand() % 101) < n;
}
int main() {
srand(time(NULL));
int probab = 75;
int k = 10;
vector<int> res;
for (int i = 0; i < 100; i++) {
if (getProb(probab)) res.push_back(-1);
else res.push_back(rand() % k);
}
}
这是使用<random>
的简短方法。
#include <random>
int biased_rand(int k, int prob)
{
static std::random_device rd;
static std::uniform_int_distribution<int> dist_prob(0, 100);
if (dist_prob(rd) <= prob)
return -1;
return std::uniform_int_distribution<int>(0, k)(rd);
}
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 整数不会重复超过随机数
- if数组上的随机数
- 在将数字随机生成为数组期间从内存输出随机数的数组
- 半随机数生成C++
- 程序在尝试猜测它选择的随机数时进入无限循环?
- 有没有办法在 c++ 中同时生成随机数?如果没有,是否有解决方法?
- 具有随机数的二维数组不会更改
- 随机数未达到限制
- 我想生成许多矩阵并用随机数填充它
- <random>在实践中应该实际使用哪个随机数引擎? std::mt19937?
- 制作具有平均值的随机数生成器
- 为什么 rand 不在我的代码中生成随机数?
- C++ 随机数生成器:尝试将结果作为向量获取,但通过制作 void 函数来执行此操作而出现错误
- 从给定种子生成相同的随机数序列C++
- 随机数生成函数说明
- C++ 尝试生成随机数时弹出警告帮助?
- 尝试在 c++ 中创建随机数生成器并收到错误
- 从给定的随机数组值生成随机数 Arduino程序C++
- 如何在个人计算机和群集 (c++) 上生成相同的随机数