rand() and srand() function opengl visual cpp
rand() and srand() function opengl visual cpp
我正在用opengl制作一个吃豆人游戏,我需要生成2个不同的数字0或1,它们负责我的吃豆人的方向偏离他所走的方向。
如何使用 rand() 函数生成一个数字,该函数为一个数字生成 75% 的随机性,为另一个数字生成 25% 的随机性?
如果我做:
n = rand() % 3;
它将得到 2 个不同的数字。问题是我不知道如何做出的随机性百分比。我可以用一个cicle和一个计数器来做它。但是有人告诉我可以直接在 rand() 函数中执行此操作。我搜索,但我在谷歌上找不到任何具体的东西。
使用<random>
库。bernoulli_distribution将在给定概率 p 下生成 true,在概率 1-p 下生成 false。
#include <random>
#include <iostream>
#include <algorithm>
#include <iterator>
int main() {
std::generate_n(std::ostream_iterator<bool>(std::cout," "), 10,
std::bind(std::bernoulli_distribution(0.25), std::mt19937()));
}
指纹:
1 0 0 1 0 0 1 0 0 0
您始终可以使用从 a
到 b
的均匀分布的随机范围,并检查您的条件,如下所示:
if((rand() % 100)>=75)
// 25%
;
else
// 75 %
;
rand() 给你一个介于 0 和 RAND_MAX 之间的随机数(典型的 32k)
因此,一半的值将在 0 和 RAND_MAX/2 之间,1/3 将在 0 和 RAND_MAX/3 之间,2/3 将在 RAND_MAX/3 和 RAND_MAX 之间。
这足以提示吗?
相关文章:
- 我可以在不创建项目的情况下在Visual Studio 2019中编译和运行HelloWorld.cpp吗?
- 如何让Visual Studio自动检测子文件夹中的.cpp文件?
- 将 PHP-CPP 库链接到 Visual Studio 2017 中的 Linux 项目
- Visual Studio 2017 Linux 远程构建 - 在每个构建中重新编译所有 cpp 文件
- 如何在安装了 WSL 的 Visual Studio Code 中修复"g++: error: helloworld.cpp: No such file or directory"?
- 从另一个CPP文件访问Form1的文本框,Visual C 2010
- 有没有办法在Visual Studio中对CPP文件进行数字签名
- Visual Studio 看不到.cpp文件
- 如何通过命令行在Visual Studio/cmake上构建yaml-cpp?
- 如何在CPP中获得当前版本的Visual Studio进行扩展项目
- Visual C 计算器类让我在多个CPP文件上传播最低的INT
- 如何在Visual Studio中的所有cpp文件中自动包含标头
- Visual Studio:热键/自动对.h中的函数进行排序以与.cpp保持一致的方式
- Visual Studio:半自动方式从.cpp移动到.h
- visual 将类分为 cpp 和头文件 (C++)
- 如何在Visual Studio代码中构建/调试当前的打开.CPP文件
- Visual studio:在生成过程中复制内容,而不考虑 cpp 更改
- 在Visual Studio 2015中运行单个.cpp文件
- 在opengl visual cpp中加载BMP
- rand() and srand() function opengl visual cpp