cpp中rand()方法的bankend程序是什么?
What is the bankend program of rand() method in cpp
每当我们想从向量中选择一个随机数时,我们都使用一个名为 rand(( 的方法。我想知道它是如何从后端工作的。
兰德有一个种子值 - 例如,将其设置为当前时间...
srand( time(NULL ) ); // second good enough
然后有一些数学像这样。
unsigned int seed; // set by srand
unsigned int rand() {
seed = seed * number + offset;
return seed;
}
选择数字和偏移量,因此涵盖了'无符号 int 的整个范围。 这通常意味着某种形式的质数。
正如评论中提到的,这是一个非常复杂的领域。
如果未调用srand
,则 seed 具有初始值,这意味着(忽略线程计时问题(,程序每次运行时都会获得相同的结果。
获得相同的结果对于重新运行测试很方便,但如果是游戏逻辑,则存在问题。
rand
不涉及"后端"。
顺便说一句,C++您最好使用标准<random>
标头和相关实用程序,它们位于C++标准库中。
rand
函数是 C 标准库的一部分。它与C++载体无关。
它们(rand
函数和<random>
的实用程序(都基于伪随机数生成器,这是一个相当复杂的领域。您仍然可以通过发明更好的PRNG来获得博士学位。
如果你想了解rand
是如何实现(或可以(实现的,你最好研究一些现有的自由软件C标准库的源代码(例如GNU glibc或musl-libc(。
如果您想了解<random>
是如何实现的,请研究C++标准库的源代码。如果您使用 GCC 编译器(例如使用g++
程序编译(,则由它提供。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- C++,系统无法执行指定的程序
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 重载操作程序时出错>>用于类中的字符串 memebr
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 试图在visual studio上用C++创建一个桌面应用程序
- 模板元程序查找相似的连续类型名称
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 如何通过cpp程序运行shell脚本
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- IPC使用多个管道和分支进程来运行Python程序
- 如何将c++程序的一些输出传递给shell,以便在shell中使用
- 使用C++程序合并排序没有得到正确的输出
- 基于boost的程序的静态链接——zlib问题
- 程序崩溃并显示"std::out_of_range"错误
- 在C应用程序中运行C++(带有STL)函数
- 使用mongocxx驱动程序时包含头文件问题
- cpp中rand()方法的bankend程序是什么?